显示自动完成的干净结果
Displaying clean results of autocomplete
我在网上找到了这段代码,它提供了自动完成选项,我想提供以字母开头的选项。例如,如果输入字母表 'a',我只想给出以 'a' 开头的选项,而不是包含 'a' 的选项,所以从代码中,当我输入 [=13] =],我只想显示苹果,而不是菠萝。我该怎么做?
var x = [
{ label : 'apple', value : 'Delicious' },
{ label : 'pineapples', value : 'Delicious' },
{ label : 'kiwi', value : 'Yummy' },
{ label : 'kiwiooo', value : 'aaa' },
{ label : 'lemon', value : 'Sour' }
];
$( "#fruit" ).autocomplete({
source: x,
focus : function(){ return false; }}).on( 'autocompleteselect',
function( e, ui ){
var t = $(this),
details = $('#taste'),
label = ( e.type == 'autocompleteresponse' ? ui.content[0].label :
ui.item.label ),
value = ( e.type == 'autocompleteresponse' ? ui.content[0].value :
ui.item.value );
t.val( label );
details.val( value );
return false;});
解决方法很简单。我发现 filter 方法就是为此而使用的。所有需要做的就是用这个替换那个函数:
// Overrides the default autocomplete filter function to and find only from the beginning of the string
<script>
$("#fruit").autocomplete({ source: function(request, response) {
var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex(request.term), "i");
response($.grep(myArray, function(item){
return matcher.test(item);
}));
}
});
</script>
我以前用过另一种解决方案。
source: function(request, response) {
var filteredArray = $.map(orignalArray, function(item) {
if( item.value.startsWith(request.term)){
return item;
}
else{
return null;
}
});
response(filteredArray);
}
我在网上找到了这段代码,它提供了自动完成选项,我想提供以字母开头的选项。例如,如果输入字母表 'a',我只想给出以 'a' 开头的选项,而不是包含 'a' 的选项,所以从代码中,当我输入 [=13] =],我只想显示苹果,而不是菠萝。我该怎么做?
var x = [
{ label : 'apple', value : 'Delicious' },
{ label : 'pineapples', value : 'Delicious' },
{ label : 'kiwi', value : 'Yummy' },
{ label : 'kiwiooo', value : 'aaa' },
{ label : 'lemon', value : 'Sour' }
];
$( "#fruit" ).autocomplete({
source: x,
focus : function(){ return false; }}).on( 'autocompleteselect',
function( e, ui ){
var t = $(this),
details = $('#taste'),
label = ( e.type == 'autocompleteresponse' ? ui.content[0].label :
ui.item.label ),
value = ( e.type == 'autocompleteresponse' ? ui.content[0].value :
ui.item.value );
t.val( label );
details.val( value );
return false;});
解决方法很简单。我发现 filter 方法就是为此而使用的。所有需要做的就是用这个替换那个函数:
// Overrides the default autocomplete filter function to and find only from the beginning of the string
<script>
$("#fruit").autocomplete({ source: function(request, response) {
var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex(request.term), "i");
response($.grep(myArray, function(item){
return matcher.test(item);
}));
}
});
</script>
我以前用过另一种解决方案。
source: function(request, response) {
var filteredArray = $.map(orignalArray, function(item) {
if( item.value.startsWith(request.term)){
return item;
}
else{
return null;
}
});
response(filteredArray);
}