【发布时间】:2012-08-22 12:07:15
【问题描述】:
本题的目标是:通过使用jquery-autocomplete,使得tab键能够在没有选择项目的情况下选择第一个项目。
我实现的代码 (1) 有效,但我有一些疑问,我想澄清它们,或者如果可能的话,改进/更改代码 (1) 以实现我的目标。
我的疑惑是:
我太早触发 ENTER:事件调度是异步的(不同的监听器是同步调用的,但它是触发器异步的),所以我可能会在监听器处理 DONE 之前触发它。
因此,我在这里仍然对两个事件使用相同的对象,所以我可能会产生讨厌的副作用(如果我在第一次调度期间阻止默认值,那么第二个事件也会被阻止,因为它是相同的对象) .
有什么建议/意见吗?
附:
- 这里是 jsfiddle 链接:http://jsfiddle.net/uymYJ/31/。
- 这个问题和这个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);
});
【问题讨论】:
-
请问
$.Event是什么?我在 jQuery API 中一无所获,但console.log($.Event)输出function。能否提供文档链接? -
@caligula,感谢您的评论。这是链接api.jquery.com/category/events/event-object。在我的代码中:
jQuery.Event等于$.Event -
澄清一下 - 你只希望tab键选择第一个项目,这意味着你想禁用向上+向下箭头?
-
@Chazbot 我想保持相同的行为并添加以下内容:
tab key select the first item if no item is selected。 -
jQuery autocomplete manual input 的可能重复项(尽管没有答案)
标签: javascript jquery jquery-ui jquery-events jquery-ui-autocomplete