Heim > Web-Frontend > js-Tutorial > Hauptteil

Lösung für den Konflikt zwischen jQuery-Blur-Ereignis und Klick-Ereignis

黄舟
Freigeben: 2017-06-26 14:16:49
Original
3192 Leute haben es durchsucht

Wie im Bild gezeigt, gibt es ein Eingabefeld und einen Login-Button.

Lösung für den Konflikt zwischen jQuery-Blur-Ereignis und Klick-Ereignis

Wenn der Fokus auf dem Eingabefeld liegt, wird durch direktes Klicken auf die Anmeldeschaltfläche das Unschärfe--Ereignis und das Klick-Ereignis ausgelöst.
Nun, ich Ich möchte klicken. Wenn das Ereignis auftritt, wird das Unschärfeereignis nicht ausgelöst.

Gibt es eine andere Methode? 🎜>Wenn das Klickereignis größer ist als Es gibt kein Problem, wenn das Unschärfeereignis früh ausgelöst wird. Daher können Sie dem Unschärfeereignis eine Zeit (verzögerte Auslösung) hinzufügen, z. B.: setTimeout(fn, 250);

2. Mouseover und Mouseout hinzufügen. Ersteres
    löscht das
  1. Unschärfeereignis und letzteres fügt es wieder hinzu. Die Maus führt das Mouseover-Ereignis aus, bevor der Klick ausgeführt wird. Wenn die Unschärfe gelöscht wird, wird sie nicht ausgeblendet. Nachdem der Klick abgeschlossen ist, fügt Mouseout die Unschärfe wieder hinzu und das war’s. (Mouseover, Mouseout verschiebt den Fokus nicht)


    Dies ist eine mobile Frontend-HTML-Seite und die verwendete Bibliothek ist zepto1 Dieses Eingabefeld ist ein Feld zur Eingabe eines Passworts Wenn Sie das Eingabefeld verlassen, wird der Inhalt des Eingabefelds überprüft, um festzustellen, ob er den Passwortregeln entspricht. 2. Wenn Sie auf die Schaltfläche „Anmelden“ klicken, wird auch der Inhalt des Eingabefelds überprüft > Nach den oben genannten zwei Überprüfungsstufen ist die Überprüfung des Eingabefelds an das Unschärfeereignis gebunden, und die Überprüfung der Anmeldeschaltfläche ist an das Tippereignis gebunden Aktualisieren--------

    Dies ist die Floating-Box-Eingabeaufforderung, die ich hier verwende






    Das Fehlererinnerungsfeld der Validierungs-API von HTML5 sieht so aus:

Lösung für den Konflikt zwischen jQuery-Blur-Ereignis und Klick-Ereignis

Dies Der HTML5-Stil sollte vom Browser selbst stammen, oder? Die Erinnerung im IE sieht anders aus. Können Sie nicht den Standardstil verwenden, wenn ein Fehler auftritt? Die Anmeldeschaltfläche ist fokussiert. Wenn die Anmeldeschaltfläche fokussiert ist, muss das ursprünglich fokussierte -Steuerelement Lösung für den Konflikt zwischen jQuery-Blur-Ereignis und Klick-Ereignis unscharf sein. Die UI-Interaktionslogik selbst muss so sein.

Ihr Problem liegt also wahrscheinlich darin, dass Sie im Blur-Event-Listener etwas getan haben, was in Blur nicht gemacht werden sollte, weshalb es zu einem sogenannten Konflikt kommt. Es empfiehlt sich, die Anforderungen genauer zu beschreiben und was der eigentliche Code nun macht. Wir können sehen, wie es umgesetzt werden sollte.

----

Update:

Laut Titelbeschreibung dient Unschärfe der Validierung. Sie sollten also natürlich keine Unschärfe verwenden, Sie können Eingabeereignisse verwenden. Sie können auch ein Änderungsereignis verknüpfen, um mit alten Browsern umzugehen.

Generell empfehle ich die Verwendung der HTML5-Gültigkeits-API, damit die Verifizierung beim Absenden automatisch erfolgt. Sie müssen sich darüber keine Sorgen machen, der von Ihnen geschriebene Bestätigungscode ist wie Spaghetti.

Verknüpfen Sie das Unschärfeereignis mit der Eingabe, und es gibt nicht mehr als drei Aktionen: 1. Fokusstil der Eingabe aufheben 2. Datenüberprüfung durchführen 3. Automatisches Auslösen einer Aktion, nachdem der Benutzer die Eingabe abgeschlossen hat ( B. das Senden eines Mobiltelefons

Bestätigungscode

)

Rein aus der Perspektive der Benutzererfahrung ist erstens nichts falsch am Standardverhalten des Browsers. Für 2 wäre es sinnvoller, die Überprüfung zu ändern, die durchgeführt wird, wenn sich die Daten des Eingabefelds ändern.

Was 3 betrifft, muss das Unschärfeereignis tatsächlich vor dem Klicken auf die Schaltfläche ausgelöst werden, da das Formular nicht gesendet werden sollte, bevor der Vorgang abgeschlossen ist.

Option 2 in der Titelbeschreibung ist einfach ein Albtraum. Was Ihrer Meinung nach eine intelligente Lösung ist, wird sehr mühsam in der Wartung sein.

Ich weiß nicht, womit Sie zu kämpfen haben, Gastgeber.

Außerdem ist es am besten, die Aktion vor dem Absenden des Formulars nicht an das Klickereignis der Schaltfläche zu binden. Versuchen Sie, $(form).on('submit');

As zu verwenden Für 3 ist das Unschärfeereignis tatsächlich Es muss vor dem Klicken auf die Schaltfläche ausgelöst werden, da das Formular nicht gesendet werden sollte, bevor der Vorgang abgeschlossen ist.

Option 2 in der Titelbeschreibung ist einfach ein Albtraum. Was Ihrer Meinung nach eine intelligente Lösung ist, wird sehr mühsam in der Wartung sein.
$('input').on('input', function() {
   // validate
});

// or

$('input').on('keypress', function() {
   clearTimeout(timer);
   timer = setTimeout(validate, 200);
});


作者:贱草
链接:https://www.zhihu.com/question/29623049/answer/45020820
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Nach dem Login kopieren
Ich weiß nicht, womit Sie zu kämpfen haben, Gastgeber.

Außerdem ist es am besten, die Aktion vor dem Absenden des Formulars nicht an das Klickereignis der Schaltfläche zu binden. Versuchen Sie, $(form).on('submit');

zu verwenden

Das obige ist der detaillierte Inhalt vonLösung für den Konflikt zwischen jQuery-Blur-Ereignis und Klick-Ereignis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage