如何在自动完成JQuery UI中获取所选行的id

时间:2015-11-18 08:33:42

标签: javascript php jquery jquery-ui autocomplete

我想在autocomplete函数中获取所选项的行ID,我从php变量中获取源代码的值。

<script>
    $(function() {
        var availableTags = [ <? php echo($toto); ?> ];
        $("#foo").autocomplete({
            source: availableTags
        });
    });
</script>

我已经尝试过这个功能,但它似乎不起作用。事实上,当我将其添加到我的脚本时,我的autocomplete将不再有效。

<script>
    $(function () {
        var availableTags = [ <? php echo($ListeNomsFormateeFinale); ?> ];
        $("#nomClient").autocomplete({
            source: availableTags
            select: function (event, ui) {
                $("#textfield1").val(ui.item.label); // display the selected text
                $("#textfield2").val(ui.item.value); // display selected id
                return false;
            }
        });
    });
</script>

我在这里做错了什么?有没有快速解决这个问题?

修改

我需要在source: availableTags之后添加逗号,我还删除了return false。但是它不会返回所选行的id,它实际上在两个文本域textfield1textfield2中写入相同的值

1 个答案:

答案 0 :(得分:2)

来自:Api Jquery UI - Autocomplete - option source

  

数组:数组可用于本地数据。有两种支持的格式:

     
      
  1. 一系列字符串:[&#34; Choice1&#34;,&#34; Choice2&#34; ]

  2.   
  3. 具有标签和值属性的对象数组:[{label:&#34; Choice1&#34;,value:&#34; value1&#34; },...]   label属性显示在建议菜单中。当用户选择项目时,该值将插入到input元素中。如果仅指定了一个属性,则它将用于两者,例如,如果仅提供值属性,则该值也将用作标签。

  4.   

第二点(2.)给出了存储&#34; id&#34;所选对象的(或其他)。例如:

var yourSource = [ { label: "Choice1", id: "id1" } ];

&#13;
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<link href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css" rel="stylesheet" />

<form>
  <input type="text" id="fooInput" />
</form>
<div id="result">
</div>


<script type="text/javascript">
  var yourSource = [
  {
    label: "A",
    id: "id1"
  }, 
  {
    label: "B",
    id: "id2"
  }];

  $("#fooInput").autocomplete({
    source: yourSource,
    select: function(event, ui) {
      var e = ui.item;
      var result = "<p>label : " + e.label + " - id : " + e.id + "</p>";
      $("#result").append(result);
    }
  });
</script>
&#13;
&#13;
&#13;

因此,请尝试格式化您的数据源,如下所示:    var source = [ {label:"Foo", id:"1"}, ... ];