此问题的目标是:使用jquery-autocomplete,如果没有选择任何项目,则使Tab键能够选择第一个项目。
我已实现的代码(1)有效,但我有一些疑问,我想澄清它们,或者,如果可能的话,改进/更改代码(1)以实现我的目标。
我的怀疑是:
我太早触发ENTER:事件调度是异步的(不同的侦听器是同步调用的,但是它与触发器是异步的),所以我可以在侦听器处理DONE之前触发它。) 因此,我仍然在这里为这两个事件使用相同的对象,所以我可能有令人讨厌的副作用(如果我在第一次调度期间阻止默认,它将被阻止为第二个,因为它是例如相同的对象)
有任何建议/评论吗?谢谢。
P.S .:
1)这是jsfiddle链接:http://jsfiddle.net/uymYJ/31/。
2)这个问题与这个How to avoid to modify the event object in this situation有关。
(1)
$("#box").keydown(function(event){
var newEvent = $.Event('keydown', {
keyCode: event.keyCode
});
if (newEvent.keyCode !== $.ui.keyCode.TAB) {
return;
}
newEvent.keyCode = $.ui.keyCode.DOWN;
$(this).trigger(newEvent);
newEvent.keyCode = $.ui.keyCode.ENTER;
$(this).trigger(newEvent);
});
答案 0 :(得分:3)
我认为你需要这样的东西:
$("#box").keydown(function(event){
var newEvent = $.Event('keydown', {
keyCode: event.keyCode
});
if (newEvent.keyCode !== $.ui.keyCode.TAB) {
return;
}
if (newEvent.keyCode == $.ui.keyCode.TAB) {
// custom logic for tab
newEvent.keyCode = $.ui.keyCode.DOWN;
$(this).trigger(newEvent);
return false;
}
// ...
});