Авто полное точное совпадение с начала с использованием автозаполнения jquery из простого массива
Как включить точное совпадение с начала строки с использованием автозаполнения jquery с помощью ввода из простого массива?
Если у меня есть следующее в массиве:
- умный
- чересчур умный
- smartland
- undersmart
- verysmart
И если я набираю "sma..." в текстовом вводе, я должен быть показан только smart и smartland, а не другие.
Ответы
Ответ 1
Вам просто нужно изменить параметр источника как функцию, соответствующую вашим потребностям. Вот так:
http://jsfiddle.net/UKgD6/
Обновление: добавление кода для ответа:
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);
}
});
Ответ 2
Способ сделать это документирован на 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>
Ответ 3
Вы можете использовать регулярные выражения для соответствия введенной подстроке со значениями в массиве, который у вас есть.
Ответ 4
JQuery имеет слишком много плагинов. Просто посыпьте немного regEx на нем и напишите что-нибудь вроде этого (я не тестировал его, но раньше делал подобное):
$('#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
, чтобы восстановить описанное поведение как проблематичное. '^'
означает начало выбора строки/строки, поэтому 's' не будет соответствовать, если это не будет в начале.
Ответ 5
Это изменилось с момента принятия предыдущего ответа. Теперь есть опция lookupFilter
, и это намного проще. Из fooobar.com/questions/591514/... просто добавьте это в список параметров:
lookupFilter: function (suggestion, originalQuery, queryLowerCase) {
return suggestion.value.toLowerCase().indexOf(queryLowerCase) === 0;
},
Ответ 6
https://github.com/devbridge/jQuery-Autocomplete, пожалуйста, перейдите и проверьте свою проблему в этом коде