我一直很难找到问题的解决方案。我使用jQuery创建了一个自动完成列表,其中有一个focus
事件。当关注文本框时,用户可以看到建议列表。这是在focus
事件中处理的,并且工作正常。
现在表单上有多个其他输入设置了tabIndex
,因此用户可以通过选项卡键在输入之间导航。如果用户通过标签键到达文本框,我不希望显示建议列表。
这是简短的代码:
$('#tbprofession').autocomplete({
source: function(request, response) {
response($.map(professionList, function(value) {
if (value.Label.toLowerCase().startsWith(request.term.toLowerCase())) {
return {
label: value.Label,
vvalue: value.ID
};
}
}));
},
select: function(e, i) {
$("#tbprofession").val(i.item.label);
$scope.selectedprofession = i.item.vvalue;
return false;
},
minLength: 0,
scroll: true
}).bind('focus', function(e) { //here is the question
$(this).val(TAC_APPLICATION_CONSTANTS.COMMON.EMPTYSTRING);
$(this).autocomplete("search");
return false;
}});
修改
如果我使用点击事件代替焦点,我可以获得密码
}).bind('click', function(e) { //here is the question
**//how to get keycode here or will this method fire on tab press?**
}});
简而言之,我如何区分标签焦点和手动对焦?
这是产生问题的小提琴http://jsfiddle.net/ubugC/321/
任何人都可以请进一步帮助。
答案 0 :(得分:0)
似乎使用点击事件(感谢@Gert偏离课程)解决了这个问题。
因为点击未检测到标签按下。
}).click(function () {
$(this).autocomplete("search");
});
这是更新的 fiddle 。
如果你有更好的想法,请更新。