[JavaScript] Ich möchte die Verarbeitung einschränken, indem ich Eingabeelemente überprüfe, wenn die angegebene Zeit zum Zeitpunkt des Fokusausgangs abgelaufen ist.

[Was ich fragen möchte]

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.

[Was ich erreichen möchte]

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.

[Was Sie implementiert haben und was Sie denken]

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?

[Was ich versucht habe]

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

[JavaScript] Ich möchte die Verarbeitung einschränken, indem ich Eingabeelemente überprüfe, wenn die angegebene Zeit zum Zeitpunkt des Fokusausgangs abgelaufen ist.
Ich möchte die Eingabe begrenzen, indem ich den Zahlenbereich einschränke
Ich möchte herausfinden, ob die angegebene Zeichenfolge vom Zielzeichencode unterstützt wird
Ich möchte die Notwendigkeit des Testens beurteilen, indem ich die Unterschiede der Klassendateien beim Refactoring von Java vergleiche.
Ich möchte den Ablauf der Spring-Verarbeitungsanforderungsparameter verstehen
Ich möchte den Rahmen des Textfelds rot machen, wenn ein Eingabefehler auftritt
Ein Memo, wenn Sie den Zeitteil des Kalenders löschen möchten
Ich möchte die JSP des offenen Portlets bei der Entwicklung von Liferay kennen
[Schienen] Was tun, wenn das Refile-Bild beim Schreiben der Verarbeitung zum Zeitpunkt des Routing-Fehlers nicht angezeigt wird?
Ich möchte den Inhalt der Absicht var_dump
[JavaScript] Axios (Ajax) kann den Antworttext zum Zeitpunkt eines Fehlers nicht abrufen
Ich möchte die Antwort der Janken-App wissen
Ich möchte den Namen des Posters des Kommentars anzeigen
Ich möchte die Bildlaufposition von UITableView zurückgeben!
Ich möchte herausfinden, welche Java-Version die JAR-Datei hat, die ich habe
[Java] Ich möchte eine asynchrone Verarbeitung mit Promise in der Java-Testversion der Promise-ähnlichen Syntax von JavaScript schreiben.
Ich möchte die Protokollausgabeeinstellung von UtilLoggingJdbcLogger ändern
Ich möchte mehrere Rückgabewerte für das eingegebene Argument zurückgeben
[Ruby] Ich möchte die Reihenfolge der Hash-Tabelle umkehren