我想知道是否有可能在keypress
事件中获得最终结果?
目前,我正在使用keyup
,因为在用户在texteara中进行了文本编辑后,它已被激活,但我编写了一个使用Mootools库执行类似操作的方法:
input.addEvent("keypress", function (input) {
var previous_result = this.value;
var end_result = this.value + input.key;
});
然而,当处理退格键等特殊键时,或者如果用户选择使用 CTRL + a && Backspace 在这种情况下,input元素的值不是“空字符串”。
我很好奇,因为我观察到Google的搜索引擎发送XMLHttpRequest并在触发keyup
事件之前改变页面。
此外,他们使用的输入可以克服我删除整个文本的问题,同时仍然享受keypress
的奢侈。
谢谢!
答案 0 :(得分:9)
这将使其有效:
input.addEvent( "keypress", function ( input ) {
setTimeout(function () {
input.value // returns the updated value
}, 0 );
});
现场演示: http://jsfiddle.net/yQQ5P/(我使用内置API,因为我不知道Mootools)
因此,您使用零超时作为收益。这为浏览器的UI线程提供了更新输入值的机会。