JavaScript按键事件获取textarea的结束值

标签 javascript mootools dom-events keypress keyboard-events

我想知道是否有可能在 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/

相关文章:

javascript - 如何在复选框列表中移动复选标记?

javascript - 用Mootools显示一个滑出、延迟3秒然后滑入的消息框?

javascript - 如何调用与我所在的名称不同的父方法?

javascript - 使用数据集捕获 child 的所有事件

javascript - 无法模拟 POST 请求——没有得到正确的响应

javascript - 当数据可用时,Material UI 组件不会自动完成

javascript - 如何检查 Twitter Bootstrap 是否存在?

javascript - 如何触发底层图片的onClick?

javascript - 如何使用createEvent和dispatchEvent设置焦点并设置输入文本中的文本?

javascript - 不使用 jQuery 时 ng-include 中的 AngularJS 错误