在 keyDown 事件及其所有相应的回调处理程序完成并返回之后,我需要调用一个函数来检查表单输入框的值。我知道我需要这个,因为如果我在回调处理程序中放置一个计时器,该计时器在 200 毫秒左右后检查输入框的值,则该值符合预期,但如果我检查回调处理程序本身末尾的值,其空。
// 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);
});
那么,在 javascript/jQuery 中是否有一种干净的方法可以在事件完全完成后调用函数?
(是的,我知道 onChange 事件,但我已经尝试过了,但它不适用于这种情况。我正在尝试检测用户定义的组合键,这是一个极端情况。在这个极端情况下,keyPress 和 keyUp 事件也不会触发,只会触发 keyDown。)
最佳答案
请改用keyUp
。 keyDown
在输入之前触发; keyUp
之后被触发。
关于javascript/jQuery 在事件完成并返回后调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8936948/