带用户限制的自动完成Jquery

带用户限制的自动完成Jquery,jquery,jquery-ui,Jquery,Jquery Ui,我正在自动完成工作,并使用了这个 现在我的问题是,这个api让用户可以灵活地键入和搜索组合框的值,但是由于这个用户可以键入任何内容。但是有没有办法限制用户提交错误的搜索查询。这是因为我的组合框将用作搜索条件,其值将提交到下一页,并且由于此功能,它将错误的数据提交到该页 提前谢谢你。。。 感谢您可以尝试使用自定义匹配器功能强制匹配或清除字段 $("#input").autocomplete({ << initialise the autocomplete here >>})

我正在自动完成工作,并使用了这个

现在我的问题是,这个api让用户可以灵活地键入和搜索组合框的值,但是由于这个用户可以键入任何内容。但是有没有办法限制用户提交错误的搜索查询。这是因为我的组合框将用作搜索条件,其值将提交到下一页,并且由于此功能,它将错误的数据提交到该页

提前谢谢你。。。
感谢您可以尝试使用自定义匹配器功能强制匹配或清除字段

$("#input").autocomplete({ << initialise the autocomplete here >>})
.on('blur', function(event){
  // Grab the autocomplete object
  var autocomplete = $(this).data("autocomplete");
  var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex($(this).val()) + "$", "i");
  // Iterate through the autocomplete list items to find any partial or full matches
  autocomplete.widget().children(".ui-menu-item").each(function() {
    var item = $(this).data("item.autocomplete");
    if (matcher.test(item.value || item)) {
      //There was a match
      matchcount++;
      autocomplete.selectedItem = item;
      return;
    }
  });
  if (autocomplete.selectedItem) {
    //if there was a match trigger the select event on that match
    autocomplete._trigger("select", event, {
      item: autocomplete.selectedItem
    });
  //there was no match, clear the input
  } else {
      $(this).val('');
  }
});
$(“#输入”).autocomplete({>})
.on('blur',函数(事件){
//抓取自动完成对象
var autocomplete=$(此).data(“autocomplete”);
var matcher=newregexp(“^”+$.ui.autocomplete.escapeRegex($(this.val())+“$”,“i”);
//遍历自动完成列表项以查找任何部分或全部匹配项
autocomplete.widget().children(“.ui菜单项”).each(函数(){
var item=$(this.data(“item.autocomplete”);
if(匹配器测试(项值| |项)){
//有一场比赛
matchcount++;
autocomplete.selectedItem=项目;
返回;
}
});
如果(自动完成。选择编辑项){
//如果存在匹配,则触发该匹配上的select事件
自动完成。\触发(“选择”,事件{
项目:自动完成。选择编辑项
});
//没有匹配项,请清除输入
}否则{
$(this.val(“”);
}
});

您可以尝试使用自定义匹配器函数强制匹配或清除字段

$("#input").autocomplete({ << initialise the autocomplete here >>})
.on('blur', function(event){
  // Grab the autocomplete object
  var autocomplete = $(this).data("autocomplete");
  var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex($(this).val()) + "$", "i");
  // Iterate through the autocomplete list items to find any partial or full matches
  autocomplete.widget().children(".ui-menu-item").each(function() {
    var item = $(this).data("item.autocomplete");
    if (matcher.test(item.value || item)) {
      //There was a match
      matchcount++;
      autocomplete.selectedItem = item;
      return;
    }
  });
  if (autocomplete.selectedItem) {
    //if there was a match trigger the select event on that match
    autocomplete._trigger("select", event, {
      item: autocomplete.selectedItem
    });
  //there was no match, clear the input
  } else {
      $(this).val('');
  }
});
$(“#输入”).autocomplete({>})
.on('blur',函数(事件){
//抓取自动完成对象
var autocomplete=$(此).data(“autocomplete”);
var matcher=newregexp(“^”+$.ui.autocomplete.escapeRegex($(this.val())+“$”,“i”);
//遍历自动完成列表项以查找任何部分或全部匹配项
autocomplete.widget().children(“.ui菜单项”).each(函数(){
var item=$(this.data(“item.autocomplete”);
if(匹配器测试(项值| |项)){
//有一场比赛
matchcount++;
autocomplete.selectedItem=项目;
返回;
}
});
如果(自动完成。选择编辑项){
//如果存在匹配,则触发该匹配上的select事件
自动完成。\触发(“选择”,事件{
项目:自动完成。选择编辑项
});
//没有匹配项,请清除输入
}否则{
$(this.val(“”);
}
});

你能在JSFIDLE上实现吗..而我没有得到$(“#输入”)。自动完成({>})在这里初始化什么?也许这是一个更清晰/更简单的答案:你能在JSFIDLE上实现吗..而我没有得到$(“#输入”)。自动完成({>})在这里初始化什么?也许这是一个更清晰/更简单的答案: