8

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

4

1 回答 1

10

这将使它工作:

input.addEvent( "keypress", function ( input ) {    
    setTimeout(function () {
        input.value // returns the updated value
    }, 0 );    
});

现场演示: http: //jsfiddle.net/yQQ5P/(我使用内置API,因为我不知道Mootools)

因此,您使用零超时作为产量。这使浏览器的 UI 线程有机会更新输入的值。

于 2013-02-12T21:31:39.197 回答