Es wurde jedoch die Überprüfungsverarbeitung im Eingabeelement nach einer bestimmten Zeit implementiert. Wenn der Fokus nicht mehr angezeigt wird und die JavaScript-Funktion verlassen wird, wird die zweimalige Anzeige in der Warnung angezeigt und es wird eine Fehlermeldung angezeigt Getan werden.
Ich möchte einmal eine Warnung ausgeben. Ich möchte jedes Mal überprüfen, wenn ich unscharf werde. Ich möchte auch nach Ablauf der angegebenen Zeit überprüfen.
main.js
function isTimecheck() {
setTimeout("onAutoSave()",Angegebene Zeit);
}
function onAutoSave() {
var result = true;
var a =Elemente eingeben.value; //Ruft den Eingabewert des Eingabeelements ab.
var maxLen = 20; //Maximale Anzahl von Zeichen: 20 im Beispiel.
if (a != '') {
result = WordCountCheck(a, maxlen);
if (result == false) {
alert(Fehlermeldung);
Elemente eingeben.focus(); //Setzen Sie den Fokus wieder auf das Eingabeelement.
return false;
}
}
}
window.onload = function(){
isTimeCheck();
}
check.js
function WordCountCheck(str, maxLength) {
var i = 0;
var len = 0; //Speichern Sie die Anzahl der Bytes.
str.value = rightTrim(str.value);//Löschen Sie nicht benötigten Platz.
var val = str.value;
if(val !=""){
for(; i<val.length; i++) {
Wenn es halb so breit ist, ist es 1 Byte, also addiere 1 zu len.
Wenn es in voller Breite ist, sind es 2 Bytes, also addiere 2 zu len.
}
if(maxLength < len){
alert(Fehlermeldung);
str.focus(); //Setzen Sie den Fokus wieder auf das Eingabeelement.
return false;
}
}
}
Test.html
<TD>
<textarea cols="" rows="" name="" style="" onBlur="WordCountCheck(this, 20);">Elemente eingeben</textarea>
</TD>
Dieser HTML-Teil
<TD>
<textarea cols="" rows="" name="" style="" onChange="WordCountCheck(this, 20);">Elemente eingeben</textarea>
</TD>
In diesem Fall wurde das Popup nur einmal angezeigt, wenn ich es mit denselben Daten wie onBlur versuchte. In diesem Fall ändert sich der Wert und es wird eine Fehlermeldung angezeigt. Der Fokus ist dann unverändert. Ich bin nicht zufrieden, weil ich es nicht überprüfen kann.
Der Überprüfungsprozess wird auch in einer anderen js-Datei beschrieben.
Als Antwort frage ich mich jetzt, ob das Folgende machbar ist. (1) Aktivieren Sie nur onBlur. Wenn ein Fehler auftritt, beenden Sie den Vorgang zu Beginn von onAutoSave. (2) Verhindern Sie, dass der onBlur-Prozess aufgerufen wird, wenn die angegebene Zeit abgelaufen ist. ③ Wenn ein Überprüfungsfehler in dem zuerst von onBlur oder onAutoSave aufgerufenen auftritt, wird der Prozess an diesem Punkt beendet (ich denke, dies ist möglich, wenn der Beendigungsprozess realisiert werden kann ...)
Erstens, bei dieser Implementierung, welche von onBlur und onAutoSave werden zuerst ausgeführt, nachdem die angegebene Zeit abgelaufen ist?
Als ich versuchte, den onBlur-Teil wie folgt zu erstellen (zur einfacheren Anzeige in JS aufgeführt), wird er natürlich zum Zeitpunkt des Fokusverlusts nicht überprüft, und er wird auch nach Ablauf der angegebenen Zeit nicht überprüft. Es scheint, dass onAutoSave zuerst aufgerufen wurde. Wenn dort ein Überprüfungsfehler auftritt, habe ich versucht, die globale Variable checkFlg auf true zu setzen, damit die Verarbeitung von onBlur nicht ausgeführt wird. Die Warnung wird jedoch zweimal angezeigt.
onBlur="isLostFocusCheck(this);"
var checkFlg=false;
function isLostFocusCheck(str) {
if(checkFlg==false) { //Wenn beim automatischen Speichern ein Überprüfungsfehler auftritt, ist checkFlg true und sollte übergeben werden.
WordCountCheck(str, 20);
}
}
Recommended Posts