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”。

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: &lt;span id=&quot...
jQuery 添加水印 &lt;script src=&quot;../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...