2012-04-04 13 views
5

Ich habe einen jQuery Event-Handler, der in einemjQuery Eingabeereignis wird nicht ausgelöst, wenn bei leerer Eingabe

<input id="myId" type="text" /> 

Element auf jede Veränderung reagiert:

$("#myId").bind('input', function (e) {  
     // Do Stuff 
    }); 

Das funktioniert perfekt, mit der Ausnahme, wenn der Eingang in #myId ist leer (zB gab es nur 1 Zeichen im Eingabefeld, und ich entferne es mit Backspace). Wenn die Eingabe leer ist, wird das Ereignis nicht ausgelöst. Wenn ich dann ein Zeichen eingabe, wird das Ereignis ausgelöst.

Ist dies ein bekanntes Problem? Mache ich etwas falsch? Gibt es eine Möglichkeit, ein Ereignis zu erhalten, wenn die Eingabe leer ist?

aktualisiert

Das Ereignis überhaupt nicht ausgelöst, wenn die Rücktaste eingegeben wird, zumindest in IE9.

+1

Wann soll das Ereignis ausgelöst werden? Kannst du 'keyup' Event nicht benutzen? – elclanrs

+0

Das oninput-Ereignis scheint nicht weit verbreitet zu sein, scheint aber zu existieren: https://developer.mozilla.org/en/DOM/window.oninput – j08691

+1

FYI, 'input'-Ereignis funktioniert nicht in IE6,7 , 8. – jfriend00

Antwort

8

Soweit ich weiß, "Eingabe" ist nicht das Ereignis, das Sie verwenden möchten. Da „Eingang“ ist analog zu „ändern“, neigt sie ein schlechtes Ergebnis zu erzeugen, wenn die Zeichenfolge 0 Zeichen nähert, verwenden keyup statt

$("input#myId").bind('keyup', function (e) {  
    // Do Stuff 
}); 
+0

https://developer.mozilla.org/de/DOM/window.oninput – j08691

+0

ah, sehr interessant. danke – Kristian

+2

Ich könnte hier falsch liegen, aber ich glaube nicht, dass Sie sagen können, keyup ist "das Ereignis, das Sie verwenden möchten", da Eingabe, im Gegensatz zu keyup, erkennt jede Eingabe, wie in Cuts & Pasten mit der Maus. Was wir hier haben, ist einfach, dass Firefox und IE nicht übereinstimmen, ob eine Rücktaste oder ein Löschen als "Eingabe" zählen soll. Ich kann beide Seiten sehen ... Meine Vermutung ist, dass Eric J. wirklich ein On-Change-Event möchte, das feuern würde, ohne zu warten, bis das Element den Fokus verliert, wie das normale Change-Event. Ich weiß nicht, was die Antwort auf diese Frage ist. – ctb

Verwandte Themen