2017-06-27 2 views
0

Ich versuche, ein Ereignis auszulösen, wenn der Benutzer einen Suchstring eingibt und die Eingabetaste drückt. Ich möchte es nicht auslösen, wenn die Eingabe den Fokus verliert (dies kann passieren, wenn der Benutzer auf andere Schaltflächen für Suchoptionen klickt). SowohlAuslösen, wenn der Benutzer die Eingabetaste drückt, aber nicht, wenn der Fokus verloren ist

$("#search-input input").val("").change(function() { 

und

$("#search-input input").val("").on('change', function() { 

Trigger beide, wenn der Benutzer etwas und Hits eingeben, sondern auch, wenn der Benutzer klickt auf etwas außerhalb des Suchfeld ein. Was wäre der richtige Auslöser für das, was ich versuche zu tun?

+0

der Tat, das tut das Gegenteil von dem, was ich versuche zu tun (es auslöst, wenn ich Fokus ändern, aber nicht, wenn ich drücken Sie Enter) – PurpleVermont

+1

Du hast Recht. Ich habe den zweiten Teil der Frage falsch gelesen als "Trigger sowohl wenn ..." – mjw

+0

Stick es in einer Form und ein Listen für einen submit, arbeitet mit den meisten denkbaren Szenarien, auch ohne Javascript – adeneo

Antwort

1
$("#search-input input").val("").on("keypress", function(e){ 
    if(e.which==13){ 
    //handle it here. 
    } 
}); 
+1

Danke, das funktioniert perfekt. (Es scheint ein bisschen unelegant und ineffizient, bei jedem Tastendruck ausgelöst zu werden, aber ansonsten in Ordnung.) Ich bin überrascht, dass es kein "benanntes Ereignis" gibt, das die Eingabetaste in einer Eingabe drückt. – PurpleVermont

+0

Wie jemand anderes erwähnt, wäre eine effizientere Lösung, an das Submit-Ereignis des Formulars zu binden, wenn das in Ihrem Anwendungsfall funktionieren würde. – ry4nolson

1

können Sie das Tastendruckereignis verwenden und prüfen, ob die Eingabetaste gedrückt wird. so etwas wie dieses:

$(document).on("keypress", "#search-input input", function(e) { 
    if (e.which == 13) { 
     //do some stuff 
    } 
}); 
Verwandte Themen