Javascript 自动完成搜索形式,在文本中间搜索
我正在使用自动完成来搜索查询 在这个源代码中,如果您输入Javascript 自动完成搜索形式,在文本中间搜索,javascript,jquery,autocomplete,Javascript,Jquery,Autocomplete,我正在使用自动完成来搜索查询 在这个源代码中,如果您输入ac,您可以得到accepts,action\u name 但是,我想用输入的name获取action\u name作为正常的搜索表单 我怎样才能做到 $(function() { var data = [ 'accepts', 'action_name', 'add', 'add_column', 'add_index', 'add_timestamps', 'after_cre
ac
,您可以得到accepts
,action\u name
但是,我想用输入的name
获取action\u name
作为正常的搜索表单
我怎样才能做到
$(function() {
var data = [
'accepts',
'action_name',
'add',
'add_column',
'add_index',
'add_timestamps',
'after_create',
];
$('#txtKeywd').autocomplete({
source: function(request, response) {
response(
$.grep(data, function(value){
return value.indexOf(request.term) === 0;
})
);
},
autoFocus: true,
delay: 500,
minLength: 2
});
});
$(函数(){
var availableTags=[
“接受”,
“行动名称”,
“添加”,
“添加_列”,
“添加索引”,
“添加时间戳”,
“创建”之后,
];
$(“#标记”).autocomplete({
资料来源:availableTags
});
});代码>
标签:
如果您想使用自动完成插件,可以这样做:
$(document).ready(function () {
var data = [
'accepts',
'action_name',
'add',
'add_column',
'add_index',
'add_timestamps',
'after_create',
];
$('#txtKeywd').autocomplete({
source: function(request, response) {
var re = $.ui.autocomplete.escapeRegex(request.term);
var matcher = new RegExp( re, "i" );
var a = $.grep( data, function(item,index){
return matcher.test(item);
});
response( a );
},
autoFocus: true,
delay: 500,
minLength: 2
});
});
您需要覆盖用于自动完成的默认正则表达式。1。您可以通过-
和-
将数据元素拆分,而不只是检查值是否在数据元素中
value.split(/-|_/)
二,。然后使用一个forEach()
循环遍历它,它将函数作为参数e
是数据元素的值
value.split(/-|_/).forEach(function(e) {});
三,。然后我们只需检查输入是否在e
字符串中
if(e.indexOf(request.term) === 0) {}
四,。如果为true且仅当为true时,我们需要告诉grep()
我们成功匹配了。为此,我们需要设置一个布尔值
if(e.indexOf(request.term) === 0) { isIn = true; return; }
以上<代码>返回代码>将结束当前拆分数据元素中的搜索
以下是完整的代码:
$(函数(){
风险值数据=[
“接受”,
“行动名称”,
“添加”,
“添加_列”,
“添加索引”,
“添加时间戳”,
“创建”之后,
];
$(“#标记”)。自动完成({
来源:功能(请求、响应){
回应(
$.grep(数据、函数(值){
让伊辛;
value.split(/-|/).forEach(函数(e){
if(e.indexOf(request.term)==0){isIn=true;return;}
});
返回isIn
})
);
},
自动对焦:对,
延误:500,
最小长度:2
});
});代码>
标签:
看看这个
var数据=[
“接受”,
“行动名称”,
“添加”,
“添加_列”,
“添加索引”,
“添加时间戳”,
“创建”之后,
];
功能拆分(val){
返回val.split(/\s*/);
}
功能提取最后(学期){
返回拆分(term.pop();
}
$(“选择”)
.自动完成({
最小长度:0,
来源:功能(请求、响应){
var term=request.term,
结果=[];
期限=最后一次提取(request.term);
如果(术语长度>0){
结果=$.ui.autocomplete.filter(数据,术语);
}
答复(结果);
},
焦点:函数(){
返回false;//防止在焦点上插入值
},
选择:功能(事件、用户界面){
}
});代码>
在此处键入:
谢谢,它以良好的形式运行,非常简单。我可能误解了什么。