keydown event neuer Wert

7

Browser: Google Chrome V19.0.1084.52

Ich habe ein Textfeld, das eine Zahl kleiner als oder gleich 255 sein muss, auf Keydown möchte ich prüfen, ob dieser Wert über oder gleich 255 ist, ansonsten das Ereignis verhindern.

Wenn ich in der Konsole das -Ereignis console.log anmelde, wird event.srcElement.value angezeigt, wenn der Wert angezeigt wird, d. h. von 12 = & gt; 123, wenn ich console.log nur event.srcElement.value es wird angezeigt, wie die Eingabe war, wird nicht sein.

Console.logs passieren nacheinander, dazwischen nichts, keine Pausen.

Wie kann ich herausfinden, wie der neue Wert eines Textfelds in der Tastenfolge angezeigt wird und warum die Datei console.log andere Ergebnisse liefert?

Danke

Hier ist mein Code:

%Vor%

Konsolen.log:

%Vor%

event.srcElement:

%Vor%     
William Isted 06.06.2012, 08:54
quelle

3 Antworten

20

Ich bin mir nicht sicher, ob es hilfreich sein könnte, aber als ich mich in einem Ereignis-Listener mit einer ähnlichen Situation befassen musste, verwendete ich setTimeout() mit 1ms Timeout, wobei ich die Hauptfunktionalität auf den Wert prüfte. usw.

Das liegt daran, dass das Eingabefeld keydown noch nicht mit den neuen Daten gefüllt ist.

Einfaches jQuery-Beispiel:

%Vor%

AKTUALISIEREN

Verwenden Sie in modernen Browsern das Ereignis 'input'.

%Vor%     
Kane Cohen 06.06.2012, 08:58
quelle
9

Sie sollten nicht keydown , sondern keypress verwenden. Dann erhalten Sie den tatsächlichen Zeichencode des zu typisierenden Zeichens.

Siehe Tastendruck, Tastenfolge, Key-up-Wert des Eingabefeldes AFTER-Ereignis , Ссылка und insbesondere Ссылка .

%Vor%

Wenn Sie nur den Eingabewert erhalten möchten, nachdem etwas eingegeben wurde, müssen Sie das keyup -Ereignis verwenden.

    
Bergi 06.06.2012 09:24
quelle
0

Das Einzige, was mir einfällt, ist, dass das srcElement-Objekt, das in der Konsole ausgegeben wird, auch nach dem Keydown-Ereignis immer noch mit dem Ereignisobjekt verknüpft ist, so dass das Objekt in der Konsole von 12 auf 123 aktualisiert wird schon in der Konsole.

Es passiert nicht mit der direkten Ausgabe von event.srcElement.value, weil das ein literaler Wert ist und bei der Protokollierung kopiert wird, nicht referenziert ...

Wenn Sie wirklich schnell wären, könnten Sie überprüfen, ob sich die Änderung in der Konsole von 12 auf 123 ändert; -)

    
Willem Mulder 06.06.2012 09:12
quelle