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% 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% 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.
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; -)
Tags und Links javascript javascript-events keydown