Ich muss eine Funktion aufrufen, um den Wert eines Formular-Eingabefeldes zu überprüfen nach das keyDown-Ereignis und alle zugehörigen Callback-Handler abgeschlossen und zurückgekehrt sind. Ich weiß, ich brauche dies, weil, wenn ich einen Timer in der Callback-Handler, die den Wert des Eingabefeldes nach 200 ms oder so der Wert überprüft ist wie erwartet, aber wenn ich den Wert am Ende der Callback-Handler selbst überprüfen, seine leer.
// case 1
$('textbox').keyDown(function(){
...
console.log($(this).val()); // empty, not as expected
});
// case 2
$('textbox').keyDown(function(){
...
var $textbox = $(this);
var timer = setTimeout(function(){
console.log($textbox.val()); // works as expected
clearTimeout(timer);
}, 200);
});
Also, gibt es eine saubere Art und Weise in javascript/jQuery, um eine Funktion aufrufen nach ein Ereignis vollständig abgeschlossen ist?
(Und ja, ich bin mir des onChange-Ereignisses bewusst, aber ich habe es ausprobiert und es funktioniert nicht für dieses Szenario. Ich versuche, benutzerdefinierte Tastenkombinationen zu erkennen und dies ist ein Eckfall. Und in diesem Eckfall, die keyPress und keyUp Ereignisse nicht feuern entweder, nur keyDown).