文本字段输入更改时触发延迟更改事件

时间:2014-03-30 18:11:37

标签: javascript jquery javascript-events

根据jQuery API

  

更改事件在其值更改时发送到元素。此活动仅限于<input>元素,<textarea>框和<select>元素。对于选择框,复选框和单选按钮,当用户使用鼠标进行选择时会立即触发事件,但对于其他元素类型,事件将延迟,直到元素失去焦点。

有没有办法让文本字段和文本区域在输入文本发生更改时触发事件,而不仅仅是在它们失去焦点时?

2 个答案:

答案 0 :(得分:3)

您正在寻找html5 input event

$(…).on("input", function(e) {…});

但是,它在旧版浏览器中不起作用。您可以挂钩多个事件(最相关的keyup),并在每个事件上激活您的侦听器。如果您正在进行相当繁重的计算,那么您应该只过滤那些导致实际变化的事件:

var val;
$(…).on("input change keyup keypress cut paste mouseup focus blur", function(e) {
    if (this.value !== val)
        val = this.value;
        …
    }
});

答案 1 :(得分:2)

使用像这样的密钥

http://api.jquery.com/keyup/

$( "#target" ).keyup(function() {
  alert( "Handler for .keyup() called." );
});