1

当我模糊出文本框或按 Enter 键时,我想让我的自动完成功能返回一个“隐藏”属性。数据格式为{value: "Pal", pts: "30"}。我想获得pts. 这是一个例子:

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

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

就我所见,仅单击下拉列表中的名称会导致点被更新。

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

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

1 回答 1

1

作为示例的基本扩展,您可以简单地检查按下时的值是否#autocomp在数组中:enter

$("#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/

于 2012-05-03T18:26:32.327 回答