jQuery blur () und klicken Sie auf ()

8

Ich habe die folgenden jQuery-Funktionen:

1) Übermittelt das Formular

%Vor%

2) Vergrößern Sie das Formular und zeigen Sie den Eingabeknopf

an %Vor%

3) Verkleinert die Textfläche und blendet die Schaltfläche

aus %Vor%

Das passiert, wenn ich versuche, einen Eintrag zu machen:

  • Klicken Sie in das Feld (Fokus-Ereignis), das Feld wird größer und zeigt die Schaltfläche
  • Geben Sie den Text ein
  • Klicken Sie zum ersten Mal auf den Eingabeknopf: Jetzt wird das Blur-Ereignis ausgelöst, wodurch das Feld wieder kleiner wird, aber das Klickereignis nicht ausgelöst wird
  • Wenn ich erneut auf den Button klicke, wird das Formular gesendet

Ich denke, das bedeutet, dass die Unschärfe und das Klickereignis sich gegenseitig beeinflussen?

Hier finden Sie eine Geige des Problems . Wenn Sie den Knopf mit dem fokussierten Feld drücken , es verwischt das Feld, aber geht nicht hinein. Wenn Sie den Knopf mit dem unscharfen Feld drücken, wird der Eintrag gesendet.

Irgendwelche Ideen?

Vielen Dank im Voraus!

    
arnoutaertgeerts 26.12.2012, 15:25
quelle

5 Antworten

2
%Vor%

und behalten Sie die Fokus- und Weichzeichnungsfunktion wie zuvor.

%Vor%     
Rashedul.Rubel 26.12.2012, 16:30
quelle
2

Dein Problem ist, dass click auf der Schaltfläche auf mouseup abfeuert, wenn du jedoch die Höhe änderst, kommt es dazu, dass deine Maus nicht mehr auf der Schaltfläche ist, wenn mouseup passiert. Verwenden Sie mousedown anstelle von click und dann trigger('blur') für textarea , um beide Ereignisse zuzulassen.

Hinweis: Sie brauchen immer noch ein click -Ereignis, damit Sie return false die Standardfunktionen für die Formularübergabe löschen können.

Geige

    
Scrimothy 26.12.2012 16:14
quelle
1

Hier ist das Problem blur , das schneller arbeitet als das click -Ereignis. Deshalb verkleinert es das Feld, anstatt das Formular zuerst einzureichen.

Sie müssen nur die erste Zeile von click in mousedown ändern:

%Vor%

Oder:

%Vor%     
prava 08.07.2013 21:04
quelle
1

Ich fand es angenehm, Ссылка

zu verwenden     
Andrey Yasinishyn 21.11.2013 08:25
quelle
0

Es sieht so aus, als ob Sie die Höhe ändern und einen Reflow erzwingen, um das Klickereignis zu löschen. Die einfachste Lösung besteht darin, entweder mousedown anstelle von click (es wird vor der Unschärfe ausgelöst) zu verwenden oder die css-Änderung in eine setTimeout einzufügen.

    
Snuffleupagus 26.12.2012 16:11
quelle

Tags und Links