使用bootstrap typeahead外掛程式實現輸入框自動補全之問題及解決辦法,bootstraptypeahead
根據網上尋找到的 typeahead使用方法,到最後一步時就出錯,資料能從資料庫讀取出來,但在輸入框顯示提示時,全都顯為:underfined。捉摸了半天都發現不了問題出在哪兒。後來在http://blog.64cm.com/post/2014/08/13/%E4%BD%BF%E7%94%A8bootstrap-typeahead%E6%8F%92%E4%BB%B6 上不經意發現這麼一句話:“在目前的版本的typeahead中,已經不再支援在source屬性中直接調用ajax方法擷取資料來源了。”提醒了我,因為我根據網上的方法,是直接在source中調用ajax方法。
再回頭現在的ace demo,雖然沒有調用ajax的樣本,但也有注釋說明如何用,只不過用的是英文(題外話:做技術的懂英語真的很重要。),經過一翻調試,終於能正確顯示了。貼出代碼如下:
js代碼
<script type="text/javascript">jQuery(function($) {//typeahead.js//example taken from plugin's page at: https://twitter.github.io/typeahead.js/examples/var substringMatcher = function() {//substringMatcher()方法return function findMatches(query, process) {//query 是配備的關鍵字,processj是返回的值var matches, substringRegex;var params = {"token": getStorage("token"), "flag":0,"name":query};var parameter_str="";for(var key in params){ parameter_str+="&"+key+"="+params[key];} var fullurl=getOption("gykj_host")+"institution/list?"+getOption("gykj_callbackparam")+"="+getOption("gykj_callbackfunc")+parameter_str;$("#submenu_info").html(fullurl);$.ajax({url:fullurl,type:'get',dataType:"jsonp",jsonp:getOption("gykj_callbackparam"),jsonpCallback:getOption("gykj_callbackfunc"),async:false,error:function(){alert("列表:"+getOption("connectionErrorMessage"));},success:function(data){//$("#submenu_info").html(fullurl);if(data.code==0){var arr,substringRegex;arr=[];substrRegex = new RegExp(query);//這必須有,要不還是顯示為underfinedfor(var item in data.data){var str= data.data[item].name;if (substrRegex.test(str)) {// the typeahead jQuery plugin expects suggestions to a// JavaScript object, refer to typeahead docs for more infoarr.push({ value:str});}}process(arr);}}})}}$('input.typeahead').typeahead({hint: true,highlight: true,minLength: 1}, {name: 'states',displayKey: 'value',source: substringMatcher()//目前的版本source屬性中不能直接調用ajax方法擷取資料來源,通過substringMatcher()方法});});</script>
html
<!-- inline scripts related to this page --><script src="../assets/js/ace-elements.js"></script><script src="../assets/js/typeahead.jquery.js"></script><input type="text" id="name" placeholder="機構名稱" class="col-xs-10 col-sm-5 typeahead scrollable" value="" autocomplete="off" />
以上所述是小編給大家介紹的使用bootstrap typeahead外掛程式實現輸入框自動補全之問題及解決辦法,希望對大家有所協助,如果大家有任何疑問請給我留言,小編會及時回複大家的。在此也非常感謝大家對幫客之家網站的支援!