![](/img/trans.png)
[英]why doesn't the jquery change event fire when i use the up or down arrows on a select?
[英]jQuery .change() event doesn't fire on select list from keyboard: how can I override this?
jQuery .change()
事件不会在用户第二次键入时触发,并按Enter键以选择项目。 它第一次开火。
请参阅: http : //jsfiddle.net/CtXbU/
如果您专注于列表并键入AD并按Enter键,则[编辑]将触发警报。 但是,如果您输入AG并按Enter,则不会发生任何事情。 单击远离列表时,仅会弹出警报。
如果我想处理用户使用鼠标和键盘更改列表,我该怎么办?
我知道我可以使用.keypress()
来处理键盘事件,但是让两个独立的代码段做同样的事情感觉很奇怪。
有没有一个jQuery事件可以在它们发生时立即处理鼠标和键盘的变化?
谢谢!
**更新**
这可能会澄清我的问题: http : //jsfiddle.net/Bybr2/2/
// How can I create an event (or handler) that
// (a) fires AS SOON AS keypress is invoked from user keyboard input
// (b) also fires AS SOON AS change is invoked from user mouse input
// (c) does not fire a second time when change is invoked after keypress, when the user clicks away following keypress?
按键后的change
可能非常混乱 - 只有当用户按下Enter或点击时才会发生,所以如果我进行客户端更改,那么用户可能会非常惊讶!
我能想到的唯一解决方案是某种变量,如user_has_just_done_keypress
,在user_has_just_done_keypress
上设置为true
,然后在下一次change
事件时重置为false
,但感觉非常混乱。 它如果你有一个同样是行不通的change
从鼠标的前change
从用户并重订。 哎呀!
为keyup
事件添加处理程序,而不是按键! 如果你使用与keypress相同的处理程序和更改,它在Firefox中不能很好地工作。
$("select").bind('change keyup', select_handler);
和处理程序
function select_handler() {
$(this).val();
};
更改功能将触发键盘输入:
但不适用于Firefox 10.0.7(所有在Windows 7 Professional,SP1上)
添加:
$('select').keypress(function() {
$(this).change();
});
到$(document).ready-function解决了,如果对我来说,没有打破其他浏览器。
更改事件仍将仅触发一次(尽管来自按键处理程序中的强制更改事件)。
您可以添加keypress
并让两个函数调用另一个函数来执行您的实际操作。 这样复制就不那么糟了。 实际上,回车键在firefox中触发事件
这就是.change()
适用于文本输入的方式。 您必须专注于更改才能生效。 这也记录在http://api.jquery.com/change/
change()Api文档读取
...当用户使用鼠标进行选择时,会立即触发事件,但对于其他元素类型,事件将延迟,直到元素失去焦点。
更新您可以将按键和更改组合在一个实时功能中,如下所示
$('div').live({
'change': function() {},
'keypress': function() {}
})
我在使用IE之前已经看过这个(所有版本,我认为)。 只有输入失去焦点时才会触发键盘更改事件; 绑定到多个事件是使处理程序像您期望的那样工作的唯一方法。 您可以通过将处理程序定义为全局函数来杀死一些冗余,然后将其设置为多个事件的处理程序:
function change_handler()
{
// ...stuff...
}
$(document).ready(function() {
$('input.whatever').bind('change keypress other_event ...', change_handler);
});
不像我想的那样干净,但它并没有那么糟糕,而且它有效。
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.