jquery – 使用键盘时改变事件不会被触发

前端之家收集整理的这篇文章主要介绍了jquery – 使用键盘时改变事件不会被触发前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
http://jsfiddle.net/rFEER/
<select id="users">
<option value="1">jack</option>
<option value="2">brill</option>
<option value="3">antony</option>
</select>​

JS:

$("#users").change(function(){
    alert($(this).val());
})​

为什么在使用(keyup / keydown)时,直到鼠标被点击才会改变事件

解决方法

why change event not fired when using (keyup/keydown) until mouse is clicked

当焦点离开选择时,它也会触发。这就是改变事件的工作原理。

如果您想要主动通知,您必须注意更改和关闭(至少您可能还需要点击),并处理当该值未实际更改时获取事件的情况,并且必须处理事实这些事件中的一些(例如keydown)在更改值之前被触发,因此在处理事件之前必须等待一会儿。或者看到SpYk3HH’s answer使用keyup而不是主动(不要更新,直到键释放,这可能是期望的),但是你不需要延迟(setTimeout)我的代码如下。

示例(live copy):

HTML(我自由地改变价值观,所以每个名字都更清晰):

<select id="users">
<option value="j">jack</option>
<option value="b">brill</option>
<option value="a">antony</option>
</select>​

JavaScript的:

$("#users").bind("keydown change",function(){
    var Box = $(this);
    setTimeout(function() {
        display(Box.val());
    },0);
});

注意在2016年:绑定大部分已被替换为on.在上面,您将直接将“bind”替换为“on”。

猜你在找的jQuery相关文章