2013-12-11 28 views
1

我有tokeninput奇怪的問題......jQuery的tokeninput,第一搜索無法正常工作

$("[name='business_list']").tokenInput({{businessList|raw}}, { 
     hintText: "{{ 'business.findBusiness'|trans }}", 
     noResultsText: "{{'no_results'|trans({},'app')|capitalize}}", 
     searchingText: "{{'searching'|trans({},'app')|capitalize}}", 
     prePopulate: {{businesses|raw}}, 
     onReady: function(){ 
      $("[name='business_list']").siblings(".token-input-list").find("#token-input-").focus(); 
     }, 
     onResult: function(items){ 
      items.push({ 
       value: "aaa", 
       label: "<span>aaa</span>" 
      }) 

      console.log(items); 
      //return items; 
     } 
    }); 

而且它的工作原理是這樣的: 例如,當我鍵入「A」,第一次它表明「沒有結果「(但在控制檯日誌中,我可以看到他找到了7個對象)。當我刪除'a'並再次輸入時,它工作正常。但是......當我輸入例如'z'時,它將再次相同。它顯示'沒有結果',但是我可以看到它找到了4個對象,在刪除之後再次打字顯示它們... 任何想法?

它的工作原理沒有「onResult」功能不錯,但我想一個對象添加到任何結果,但這種不正常工作......

+0

我假設'return items'沒有被註釋掉在你的實際代碼中!你有沒有可以分享的例子,或者你可以創建一個相同的jsfiddle嗎?這是一個有趣的問題,我看不出有什麼明顯的錯誤! – Chris

+0

幾個小時前我解決了這個問題,我用正確的代碼發佈了答案。 –

+0

問題是缺少'id'字段?有趣...新的一個在我身上!感謝分享! – Chris

回答

0

問題解決了,代碼:

$("[name='business_list']").tokenInput({{businessList|raw}}, { 
      hintText: "{{ 'business.findBusiness'|trans }}", 
      noResultsText: "{{'no_results'|trans({},'app')|capitalize}}", 
      searchingText: "{{'searching'|trans({},'app')|capitalize}}", 
      prePopulate: {{businesses|raw}}, 
      onReady: function(){ 
       $("[name='business_list']").siblings(".token-input-list").find("#token-input-").focus(); 
      }, 
      onResult: function(items){ 
       var value = $('#token-input-').val(); 
       items.push({ 
        label: "<span class='new-business'><img src='{{ asset('bundles/cloudcrm/images/business.png') }}' style='margin-right: 5px;'>{{ 'deals.newDeal.addBusiness'|trans({},'crm')|capitalize }}<strong>" + " " + value + "</strong></span>", 
        id: "new", 
        value: value 
       }); 
       return items; 
      }, 
      onAdd: function(item){ 
       if($(item.label).hasClass("new-business") == true){ 
        $("[name='business_list']").tokenInput("remove", item); 
        $(".modal-business-add").modal('show'); 
       } 
      } 
     });