微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/jquery/182588.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐