2017-01-08 79 views
0

我有一個Bootstrap Typeahead函數,我想定製一點點。如果用戶點擊結果下拉列表中的任何項目,用戶將被重定向到一個子頁面。該預輸入功能是偉大的工作,在下拉列表中填充沒有任何錯誤,這是一個例子什麼是從PHP文件返回:TypeError:ui未定義jQuery

[{"name":"TEXT-ONE","url":"\/textone-postfix"},{"name":"TEXT-TWO","url":"\/texttwo-postfix"},{"name":"TEXT-THREE" 
,"url":"\/textthree-postfix"}] 

的想法是,「姓名」屬性被顯示給用戶點擊後,它會重定向到「url」屬性。

的問題是,現在在我點擊任何我得到這個錯誤的項目(火狐Firebug的控制檯輸出):

TypeError: ui is undefined 

這是我的jQuery的功能,在這之前的.js進口:

<!-- Bootstrap core JavaScript 
    ================================================== --> 
    <!-- Placed at the end of the document so the pages load faster --> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> 
    <script src="/bootstrap/js/bootstrap.min.js"></script> 
    <!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> 
    <script src="/bootstrap/js/ie10-viewport-bug-workaround.js"></script> 
    <script src="/bootstrap/js/bootstrap3-typeahead.js"></script> 

    <script type="text/javascript"> 
    $(document).ready(function() { 
    $(function() { 
     $('#namesearch').typeahead({ 
     source: function(request, response) { 
      $.ajax({ 
      url: '/functions/search-autocomplete.php', 
      type: 'POST', 
      dataType: 'JSON', 
      data: 'query=' + request, 
      success: function(data) { 
       response($.map(data, function(item) { 
       return { 
        url: item.url, 
        value: item.name 
       } 
       })) 
      } 
      }) 
     }, 
     displayText: function(item) { 
      return item.value 
     }, 
     select: function(event, ui) { 
      window.location.href = ui.item.url; 
     } 
     }); 
    }); 
    }); 
    </script> 
    </body> 

有人可以幫助我,請問這裏有什麼問題?

非常感謝!

+0

錯誤相當多說,有被傳遞到'select'功能在您的預輸入配置沒有第二個參數。你能指定你正在使用哪種typeahead庫嗎? – Schlaus

+0

好吧,我想問題是,你是如何將該選擇函數附加到任何調用它的?你的代碼的第一部分確實工作(調用一個php url)... – sweaver2112

+0

該庫也在導入部分:bootstrap3-typeahead。我不是一個真正的jQuery/JS大師,所以它也可能是一個簡單的衝突......但是,如果我添加或刪除jquery-ui.min.js,這並沒有幫助。 – VORiAND

回答

0

更新功能是解決辦法:

$(document).ready(function() { 
    $(function() { 
     $('#namesearch').typeahead({ 
     source: function(request, response) { 
      $.ajax({ 
      url: '/functions/search-autocomplete.php', 
      type: 'POST', 
      dataType: 'JSON', 
      data: 'query=' + request, 
      success: function(data) { 
       response($.map(data, function(item) { 
       return { 
        url: item.url, 
        value: item.name 
       } 
       })) 
      } 
      }) 
     }, 
     displayText: function(item) { 
      return item.value 
     }, 
     updater: function (item) { 
       window.location.href = item.url 
     }, 
     }); 
    }); 
    });