如何啓用精確匹配從字符串開始使用jquery自動完成與簡單數組的輸入?自動完成完全匹配從開始使用jquery自動完成從簡單的數組
如果我有一個數組如下:
- 智能
- oversmart
- 創意無限
- undersmart
- verysmart
如果我打字「SMA。 ..」在文字輸入,我必須只顯示聰明,創意無限,而不是其他。
如何啓用精確匹配從字符串開始使用jquery自動完成與簡單數組的輸入?自動完成完全匹配從開始使用jquery自動完成從簡單的數組
如果我有一個數組如下:
如果我打字「SMA。 ..」在文字輸入,我必須只顯示聰明,創意無限,而不是其他。
你只需要修改源參數作爲一個功能,以滿足您的需求。就像這樣:
更新:添加代碼回答:
var acList = ['smart', 'oversmart', 'smartland', 'undersmart', 'verysmart'];
$('#ac').autocomplete({
source: function (request, response) {
var matches = $.map(acList, function (acItem) {
if (acItem.toUpperCase().indexOf(request.term.toUpperCase()) === 0) {
return acItem;
}
});
response(matches);
}
});
真棒...這就像一個魅力,正是我正在尋找與jquery自動完成 - 謝謝! –
您可以使用正則表達式將輸入的子字符串與數組中的值匹配。
jQuery有太多的插件。只是撒上少許正則表達式就可以寫這樣的事情(我沒有測試,但我以前做過類似的東西):
$('#someTextInput').keyup(function(){
var regExMatch = new RegEx('^' + $(this).val());
$_LIs = $('#someUl li');
$_LIs.hide();
$_LIs.each(function(){
if(this.innerText.match(regExMatch)) { $(this).show(); }
});
});
您可以刪除在new RegEx
參數'^' +
恢復您的行爲「重新作爲描述有問題的。 '^'
表示開頭的行/串的選擇,這樣的「不匹配,除非它是在開始。
埃裏克 - 謝謝你,我會記住這一點和調整,看看它是如何適應的autcomplete內... –
這已經改變,因爲以前的答案被接受。現在有一個lookupFilter
選項來做到這一點,它要簡單得多。從https://stackoverflow.com/a/23239873/1204434,只需添加到您的選項列表:
lookupFilter: function (suggestion, originalQuery, queryLowerCase) {
return suggestion.value.toLowerCase().indexOf(queryLowerCase) === 0;
},
要做到這一點是在http://api.jqueryui.com/autocomplete/
<script>
var tags = [ "c++", "java", "php", "coldfusion", "javascript", "asp", "ruby" ];
$("#autocomplete").autocomplete({
source: function(request, response) {
var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex(request.term), "i");
response($.grep(tags, function(item){
return matcher.test(item);
}));
}
});
</script>
的可能重複記錄的方式[jQuery的自動完成插件搜索配置(HTTP:/ /stackoverflow.com/questions/2382497/jquery-autocomplete-plug-in-search-configuration) – j08691