Wenn sich Benutzer registrieren, müssen sie einige Inhalte eingeben und jedem Formular einen Flag-Wert zuweisen.
Wenn der Fokus verloren geht, wird der Flag-Wert des Formulars erkannt.
Bei der endgültigen Übermittlung werden diese Flag-Werte angezeigt sind korrekt. Sie können
senden, aber hier kommt das Problem:
Wenn der Fokus des Benutzers jetzt auf dem Eingabefeld für den Bestätigungscode liegt und der Benutzer nach Eingabe des Bestätigungscodes auf die Schaltfläche „Senden“ klickt, um sich zu registrieren, Es liegt kein Problem vor
, da der Benutzer die Maus vom Bestätigungscode-Eingabefeld zur Schaltfläche „Senden“ bewegt. Die Überprüfung des Bestätigungscodes ist abgeschlossen und der Flag-Wert ist wahr.
Wenn der Benutzer jedoch verwendet Drücken Sie zum Senden die Eingabetaste und der Fokus befindet sich immer noch im Eingabefeld für den Bestätigungscode. Dies erfordert den manuellen Code focusout()
<code>$("input:focus").focusout(); for(var i=0;i<$("input").length;i++){ if($("input").eq(i).attr('flag')==0){ return false; } }</code>
Der Bestätigungscode wird in der Sitzung platziert. Zu diesem Zeitpunkt muss im Hintergrund überprüft werden, ob der Flag-Wert des Formulars korrekt ist Der folgende Code wird ausgeführt und gibt false zurück, was zu Folgendem führt: Das Formular kann nicht gesendet werden
Ich habe auch darüber nachgedacht, der for-Schleife eine Verzögerung zu geben, damit beim Absenden durch den Benutzer alle überprüft werden können, die überprüft werden müssen
Aber In diesem Fall kann der Benutzer direkt einreichen, ohne etwas einzugeben. Alle Bestätigungen an der Rezeption sind ungültig.
Ich weiß nicht, ob meine Beschreibung klar genug ist Hinterlassen Sie eine Nachricht, vielen Dank an alle
Wenn sich Benutzer registrieren, müssen sie einige Inhalte eingeben und jedem Formular einen Flag-Wert zuweisen.
Wenn der Fokus verloren geht, wird der Flag-Wert des Formulars erkannt.
Bei der endgültigen Übermittlung werden diese Flag-Werte angezeigt sind korrekt. Sie können
aber hier kommt das Problem:
Wenn der Fokus des Benutzers jetzt auf dem Eingabefeld für den Bestätigungscode liegt und der Benutzer nach Eingabe des Bestätigungscodes auf die Schaltfläche „Senden“ klickt, um sich zu registrieren, Es liegt kein Problem vor.
Da der Benutzer die Maus vom Bestätigungscode-Eingabefeld zur Schaltfläche „Senden“ bewegt, ist die Überprüfung des Bestätigungscodes abgeschlossen und sein Flag-Wert ist bereits wahr.
Wenn der Benutzer jedoch verwendet Drücken Sie zum Senden die Eingabetaste und der Fokus befindet sich immer noch im Eingabefeld für den Bestätigungscode. Dies erfordert den manuellen Code focusout()
<code>$("input:focus").focusout(); for(var i=0;i<$("input").length;i++){ if($("input").eq(i).attr('flag')==0){ return false; } }</code>
Der Bestätigungscode wird in der Sitzung platziert. Zu diesem Zeitpunkt muss im Hintergrund überprüft werden, ob der Flag-Wert des Formulars korrekt ist Der folgende Code wird ausgeführt und gibt „false“ zurück, was zu „Das Formular kann nicht gesendet werden“ führt
Ich habe auch darüber nachgedacht, der for-Schleife eine Verzögerung zu geben, damit beim Absenden durch den Benutzer alle Dinge überprüft werden können, die überprüft werden müssen
In diesem Fall kann der Benutzer jedoch direkt einreichen, ohne etwas einzugeben. Alle Bestätigungen an der Rezeption sind ungültig.
Ich weiß nicht, ob meine Beschreibung klar genug ist Ich kann eine Nachricht hinterlassen, vielen Dank an alle
Sie können beim Absenden alle Testbedingungen erneut ausführen und dann prüfen, ob alle Flags wahr sind.
Sie können den Eingabewert des Bestätigungscodes direkt übermitteln und mit der Hintergrundsitzung vergleichen. Warum müssen Sie ein Front-End-Verifizierungszeichen übermitteln? Alles, was am Frontend übermittelt wird, kann gefälscht werden.
Fügen Sie vor dem Senden ein Ajax-Ereignis hinzu, das heißt, stellen Sie fest, ob der Bestätigungscode korrekt ist, und senden Sie ihn dann ab, wenn er nicht korrekt ist. Wenn er nicht korrekt ist, wird ein Popup-Fenster angezeigt und Sie werden nicht gesendet.
Sie können die oben genannte Situation verhindern.
<code>$("input[type=submit]").click(function(){ $("input:focus").focusout(); // 检测延时50s左右 setTimeout(function(){ var submitFlag=true; // 两个for循环可以抽出一个函数 for(var i=0;i<$("input").length-2;i++){ if($("input").eq(i).attr('flag')==0){ submitFlag=false; } } if(submitFlag){ $("form").submit(); } },100); for(var i=0;i<$("input").length-2;i++){ if($("input").eq(i).attr('flag')==0){ return false; } } });</code>