我可以在不通过下拉列表的情况下让 jQuery 自动完成以匹配输入吗?

Can I get jQuery autocomplete to match input without going through dropdown?

本文关键字:输入 jQuery 下拉列表 情况下 我可以      更新时间:2023-09-26

我想让我的自动完成在模糊文本框或按回车键时返回"隐藏"属性。数据的格式为 {value: "Pal", pts: "30"} .我想获得pts.下面是一个示例:

http://jsfiddle.net/ctuAg/4/

键入一两个字母并从下拉列表中选择一个名称,按预期更新"点"文本框(名称长度的 10 倍)。现在,我想知道是否有办法在完全键入名称然后按 Enter 或模糊(选项卡或鼠标单击)时触发此点更新。也就是说,让自动完成搜索与文本框值和更新点匹配。

到目前为止,仅单击下拉列表中的名称才能更新点。

做了一些搜索,我找到的最接近的功能/触发器是search。我尝试将其放在模糊中,但 .pts 返回未定义。这可能是答案,我应该如何在我的情况下使用它?

    $("#autocomp").autocomplete({
      search: function(event, ui) {
        alert(ui.item.pts);
      }
    });

作为示例的基本扩展,您可以简单地检查 #autocomp 的值是否在数组中,然后按回车键:

$("#autocomp").keypress(function(event) {
  var keycode = (event.keyCode ? event.keyCode : event.which);
  if(keycode == '13') {
    $("#status").append("Enter pressed'n");
      /* NEW CODE HERE */
      // loop through the array and check the value against available names
      for ( var i = 0, l = names.length; i < l; i++) {
          // if the name matches, update #points
          if ($(this).val() === names[i].value) {
            $("#points").val(names[i].pts);
          }                      
      }              
      /* END NEW CODE */    
    $("#points").focus();
  }
});

虽然这可能不是最有效的方法,但它可以完成工作。在这里小提琴:http://jsfiddle.net/ctuAg/6/