2012-08-09 69 views
1

小問題(我不是ajax/json guru,裸露在身邊)。bootstrap typeahead ajax從數據中選擇值

使用: https://github.com/tcrosen/twitter-bootstrap-typeahead/blob/master/demo/js/demo.js

我的電話:

$('#SearchUser').typeahead({ 
       ajax: { 
        url: '/users/ajax_finduser', 
         triggerLength: 3, 
         timeout: 300, 
         method: 'post', 

       }, 
       display: 'name', 
       val: 'id', 
       itemSelected: updateID 
      }); 

我的新的輸出:

[ 
    {"id":"5","name":"Som name"}, 
    {"id":"6","name":"Another name"} 
] 

這裏是我的問題VAL和名稱預輸入期待應該是像這樣:

[ 
    { id: 1, name: 'Some users name' }, 
    { id: 2, name: 'Another users name' } 
] 

那麼如何將額外的級別添加到我的typeahead函數(USER.name + User.id)?我不知道該用什麼(){} []?

更新: 如何解決報價? typeahead不會像原樣那樣接受json輸出。我在某處讀到我的輸出是正確的json。我在這裏錯過了什麼嗎?

感謝您的幫助!

-Tom

+0

有了一個快速瀏覽一下插件,而不是要發生的事。你應該考慮修改你的輸出。 – Sherbrow 2012-08-09 18:56:29

+0

Okei ..我修改了輸出。但現在有一個報價問題..任何建議?或者可以使用另一個typeahead腳本建議,我可以使用它? – Tom 2012-08-09 20:54:42

+1

似乎對我來說工作得很好:[jsfiddle](http://jsfiddle.net/Sherbrow/bTzZm/)。你有錯誤,或者是什麼?但是如果你想刪除數字周圍的引號,你的服務器端輸出應該有一些數字解析。 – Sherbrow 2012-08-09 21:42:06

回答

4

gist通過@RuslanasBalčiūnas
建議在這裏是我結束了:

autosep = '####'; 
$('.autocomplete').typeahead({ 
    minLength: 3 
    , source: function (query, process) { 
     if (!finished) { 
      return; 
     } 
     finished = false; 
     return $.get(
      'the_action' 
      , the_params 
      , function (response) { 
       var data = new Array(); 
       for (var i in response) { 
        data.push(
         response[i]['id'] 
         + autosep 
         + response[i]['label'] 
        ); 
       } 
       finished = true; 
       return process(data); 
      } 
     ); 
    } 
    , highlighter: function(item) { 
     var parts = item.split(autosep); 
     parts.shift(); 
     return parts.join(autosep); 
    } 
    , updater: function(item) { 
     var parts = item.split(autosep); 
     $('#the_id').val(parts.shift()); 
     return parts.join(autosep); 
    } 
}); 
+0

這似乎不適合我。我已經刪除了「源」部分,因爲我的選擇是在頁面中進行硬編碼的。我仍然會在建議中看到####。 – Allerion 2013-04-29 11:57:11