2015-03-31 69 views
0

我想自動完成一個下拉列表。自動完成一個包含ID和值的下拉列表

這是我JSON字符串

[{ 「ID」:1, 「名稱」: 「大衛」},{ 「ID」:2, 「名稱」: 「保羅」} ]

這是我輸入

<input type="text" id="tbNames" /> 

,這是我的javascript

//datas variable contains the json string 
    function BindNames(datas) { 
     $('#tbNames').autocomplete({ 
      source: datas, 
      minLength: 0, 
      scroll: true, 
      select: function (event, ui) { 
       $("#tbNames").val(ui.item.Name); 
       return false; 
      } 
     }).focus(function() { 
      $(this).autocomplete("search", ""); 
     }); 
    } 

的問題是,當我點擊「tbNames」輸入顯示在下拉列表中,但名稱中不顯示,但也有在名單內的名字,因爲當我點擊的下拉列表兩個名字之一顯示在我的輸入內。

http://jsbin.com/wudidaqapo/1/edit?html,css,js,console,output

感謝您的幫助。

+0

請提供您的代碼在jsfiddle – 2015-03-31 14:47:22

+0

http://jsbin.com/wudidaqapo/1/edit?html,css,js,console,output – userfloflo 2015-03-31 15:24:54

回答

1

試試這個:

function BindNames() { 
      var datas=[{"ID":1,"Name":"david"},{"ID":2,"Name":"Paul"}]; 

      $('#tbNames').autocomplete({ 

       source: function (request, response) { 
       response($.grep(($.map(datas, function (v, i) { 

       return { 
        label: v.Name, 
        value: v.ID 
       }; 
       })), function (item) { 
        return item.label; 
       })); 
       }, 
       minLength: 0, 
      scroll: true, 

    }).focus(function() { 
      $(this).autocomplete("search", ""); 
     }); 
} 
+0

謝謝,你的解決方案顯示所有的名字!我需要使用:.focus(function(){$(this).autocomplete(「search」,「」);});我試着用你的代碼做到這一點,但它不工作。你能幫我嗎? – userfloflo 2015-03-31 15:56:16

+1

我有更新,所以請更新您的代碼,如上面 – 2015-03-31 16:02:28

1

請看看它是否幫助you.please使用您的JSON對象的「標籤」性質,其中Autocompleter用來尋找匹配

[{"ID":1,"Name":"david","label":"david"},{"ID":2,"Name":"Paul","label":"Paul"}] 
+0

謝謝它的作品太:) – userfloflo 2015-04-01 07:34:16