Jquery自动完成选项卡焦点不应该打开列表

时间:2016-05-27 14:37:23

标签: jquery jquery-ui autocomplete

我一直很难找到问题的解决方案。我使用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/

任何人都可以请进一步帮助。

1 个答案:

答案 0 :(得分:0)

似乎使用点击事件(感谢@Gert偏离课程)解决了这个问题。

因为点击未检测到标签按下。

}).click(function () {
    $(this).autocomplete("search");
});

这是更新的 fiddle

如果你有更好的想法,请更新。