2012-09-24 71 views
0

我正在創建一個新的本地項目,其中有很多街道名稱添加到我的數據庫中。我拉這些使自動完成腳本工作。一切都很好,但是,我需要對我現有的腳本進行2次修改。爲jQuery添加限制自動完成

第一個:添加matcher.slice(0,10)來處理我的當前代碼//確保一次只顯示10條建議 第二個:阻止輸入字段中的自由輸入。因此,如果街道名稱是Čačanska,請屏蔽Čačanskablah等新條目。下面加jsfiddler例子

<script> 
    $(function() { 
var names = [ "Čačanska", "Čajetinska", "Čantavirski Put", "Čapajeva", "Čavoljska", "Čede Žice", "Čikerijska", "Đakovska", "Đerđa Dože", "Đerđa Lukača", "Đerda Dože", "Đerdapska", "Đeri Ferenca", "Đevđelijska", "Đorđa Natoševića", "Đorda Natoševica", "Đule Valija", "Đurđinska", "Đurdinska", "Đure Đakovića", "Đure Daničića", "Đure Stantića", "Šabačka", "Šajkaška", "Šamačka", "Šandora Lifke", "Šandora Petefija", "Šantićeva", "Šarplaninska", "Šebešićka", "Šekspirova", "Šenoina", "Šibenska", "Šidska", "Šime Ivića", "Šime Tikvickog", "Šimeta Tikvickog", "Široki Progon" ]; 

var accentMap = { 
      "š": "s", 
      "ć" : "c", 
      "č" : "c", 
      "ž" : "z", 
      "đ" : "d", 
      "s" : "š", 
      "c" : "č", 
      "c" : "ć", 
      "z" : "ž", 
      "d" : "đ", 
      "Š": "S", 
      "Ć" : "C", 
      "Č" : "C", 
      "Ž" : "Z", 
      "Đ" : "D", 
      "S" : "Š", 
      "C" : "Č", 
      "C" : "Ć", 
      "Z" : "Ž", 
      "D" : "Đ" 
     }; 
     var normalize = function(term) { 
      var ret = ""; 
      for (var i = 0; i < term.length; i++) { 
       ret += accentMap[ term.charAt(i) ] || term.charAt(i); 
      } 
      return ret; 
     }; 

     $("#addr").autocomplete({ 
      source: function(request, response) { 
       var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i"); 
       response($.grep(names, function(value) { 
        value = value.label || value.value || value; 
        return matcher.test(value) || matcher.test(normalize(value)); 
       })); 

       } 
     }); 
    }); 
</script> 

第一個例子:http://jsfiddle.net/andrewwhitaker/vqwBP/

第二個例子:http://jsfiddle.net/prCsm/

所以基本上,我想這兩個例子添加到現有的代碼,但無論我做什麼,自動完成功能停止工作..提前致謝!

回答

0

正如我在等待有人來幫助我,我仍然試圖解決它自己...

解決方案「顯示10個結果的時間」是以下

$("#addr").autocomplete({ 
    source: function(request, response) { 
     var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i"); 
     var results = $.grep(names, function(value) { 
      value = value.label || value.value || value; 
      return matcher.test(value) || matcher.test(normalize(value)); 
         }) 
      results = results.slice(0,10); 
     response(results); 
     } 
});