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