Dies ist eine komplette Überarbeitung meiner Ausgangsfrage, alle nicht benötigten Ressourcen und Referenzen gelöscht wurdenein prevent Verwenden Sie aus der Schleife zu erhalten, nachdem drücken Enter-Taste
Ich binden das gleiche Ereignis-Listener 2 verschiedene Elemente : eine Taste und Enter-Taste, und es sieht wie folgt aus:
var funcelement = function(){
//function code
};
$('#buttonID').click(funcelement);
$('#inputID').keyup(function() {
if (event.which == 13) {
$('#buttonID').trigger('click');
}
})
Was Ausbreitung der Enter-Taste drücken zu tun, ich versuche zu verhindern, ist, wenn der Fokus auf der Submit-Button (#buttonID) unter Verwendung von prevent ist().
Also habe ich verschiedene Kombinationen ausprobiert, damit es funktioniert. Hier finden Sie das neueste Ergebnis auf meinen Versuchen
$('#inputID').keyup(function() {
var hasfocus = $('#buttonID').is(':focus') || false;
if (event.which == 13) {
if (!hasfocus) {
event.preventDefault();
$('#buttonID').trigger('click');
//hasfocus = true;
}
else {
//event.preventDefault();
//$('#buttonID').trigger('click');
}
}
})
Nachdem ich einen Text in ein Eingabefeld eingeben, und drücken Sie Enter-Taste, um ein Bestätigungsfenster mit Ja/Abbrechen Tasten erscheint mit Fokus auf Ja. Sobald ich erneut die Eingabetaste drücke, erscheint ein weiteres Fenster, in dem bestätigt wird, dass die Änderungen vorgenommen wurden, mit der Ok-Taste, die darauf fokussiert ist. Sobald ich wieder Enter drücke, wird alles gemacht, was ich brauche.
Es gibt jedoch ein Problem: nach dem letzten Schritt gehe ich zurück zur if (! Hasfocus) Zeile.
Wie verhindere ich das? Sobald das Zeug, das ich brauche, fertig ist - will ich nicht noch einmal in diese Zeile gehen.
Ich finde, dass 'stopPropagation' ist fast immer eine schlechte Wahl. Es tötet die Ereignisdelegation und verbirgt viele Probleme, die zu Wettlaufbedingungen führen könnten. – zzzzBov
@zzzzBov Dann sollte ich nach Alternativen suchen, wie StopBubble? –
.focus() ist eine Funktion, die den Fokus auf dieses Element setzt. Um einfach zu prüfen, ob der Fokus auf einem Element liegt, hat jquery den ": focus" -Selektor. Benutze es so: $ ('# buttonID'). Is (': focus') – Cameron637