Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自动完成搜索形式,在文本中间搜索_Javascript_Jquery_Autocomplete - Fatal编程技术网

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;//防止在焦点上插入值
},
选择:功能(事件、用户界面){
}
});

在此处键入:

谢谢,它以良好的形式运行,非常简单。我可能误解了什么。