Wie kann ich mit einem Wechsel umgehen <input type="number" id="n" value="5" step=".5" />
? Ich kann kein keyup
oder tun keydown
, weil der Benutzer möglicherweise nur die Pfeile verwendet, um den Wert zu ändern. Ich würde damit umgehen wollen, wenn es sich ändert, nicht nur bei Unschärfe, was meiner Meinung nach das .change()
Ereignis tut. Irgendwelche Ideen?
82
Antworten:
Verwenden Sie Mouseup und Keyup
http://jsfiddle.net/XezmB/2/
quelle
input
).input
stattdessen (wie in einer anderen Antwort vorgeschlagen) scheint besser zu funktionieren.Das
oninput
Ereignis (.bind('input', fn)
) deckt alle Änderungen von Tastenanschlägen zu Pfeilklicks und Einfügen von Tastatur / Maus ab, wird jedoch in IE <9 nicht unterstützt.quelle
http://jsfiddle.net/XezmB/8/
Dies ist ein bisschen Ghetto, aber auf diese Weise können Sie das "Klick" -Ereignis verwenden, um das Ereignis zu erfassen, das ausgeführt wird, wenn Sie mit der Maus über die kleinen Pfeile auf der Eingabe inkrementieren / dekrementieren. Sie können sehen, wie ich eine kleine manuelle Routine "Änderungsprüfung" eingebaut habe, die sicherstellt, dass Ihre Logik nur ausgelöst wird, wenn sich der Wert tatsächlich geändert hat (um zu verhindern, dass durch einfaches Klicken auf das Feld falsch positive Ergebnisse erzielt werden).
quelle
Um festzustellen, wann Maus oder Taste gedrückt werden, können Sie auch schreiben:
quelle
Demo: http://jsfiddle.net/X8cV3/
quelle
input
).Da
$("input[type='number']")
dies im IE nicht funktioniert, sollten wir beispielsweise einen Klassennamen oder eine ID verwenden$('.input_quantity')
.Und benutze keine
.bind()
Methode. Die.on()
Methode ist die bevorzugte Methode zum Anhängen von Ereignishandlern an ein Dokument.Meine Version lautet also:
HTML
jQuery
quelle
Es mag eine bessere Lösung geben, aber Folgendes kam mir in den Sinn:
Hier ist ein Arbeitsbeispiel .
Es bindet nur einen Event - Handler an die
keyup
,change
undclick
Veranstaltungen. Es prüft, ob sich der Wert geändert hat oder nicht, und speichert in diesem Fall den aktuellen Wert, damit er beim nächsten Mal erneut prüfen kann. Die Prüfung ist erforderlich, um dasclick
Ereignis zu behandeln .quelle
value
.ODER
quelle
quelle
data-prev
Attribut verwenden, um den vorherigen Wert zu speichern. Keine Notwendigkeit, zusätzliche Eingabe zu verwendenIch hatte das gleiche Problem und habe es mit diesem Code gelöst
HTML
Sie können nur 3 erste Zeilen hinzufügen, die anderen Teile sind optional.
Beispiel hier: http://jsfiddle.net/XezmB/1303/
quelle