以编程方式搜索后,JQuery ui自动完成触发器功能

时间:2016-03-19 19:58:05

标签: jquery jquery-ui autocomplete

我有一个带有JQuery ui自动填充建议的街道输入字段。在用户选择其中一个建议后,他应输入该号码。然后在数字模糊时,如果街道在建议中,则功能将使用以下自动完成搜索功能进行验证。如果是,则应调用其他函数。 我无法调用其他功能。

这是我的代码:

$("#street").autocomplete({ 
   source: "street.php",
minLength: 2,    
    search: function (event,ui) {
            //Return to input field
            if (ui.item==null)
             {
             alert("Please select a street.");          
           $("#street").focus();
           return;
            } else{
                //call an outside function,
                //does not work
                address-search();
            }               
    }
  });

提前感谢您帮助解决此问题。

2 个答案:

答案 0 :(得分:1)

我认为你需要搜索回调来做到这一点:

$("#street").on("autocompletesearch", function(event, ui) {
    if (ui.item === null) {
       alert("Please select a street.");          
       $("#street").focus();
    } else {
       address-search();
    }
});

此处的文档:http://api.jqueryui.com/autocomplete/#event-change

编辑:根据您的具体代码,我认为您想要这个:

$(document).ready(function() {
  var availableTags = [
    "1.Street",
    "2.Street",
    "3.Street"
  ];
  $("#street")
    .autocomplete({
      source: availableTags,
      minLength: 2,
    })
    .on("autocompletechange", function(event, ui) {
      if (ui.item === null) {
        alert("Please select a street.");
        $("#street").focus();
        xhr.abort();
      } else {
        address_search();
      }
    });
  function address_search() {
    alert($("#street").val());
  }
});

更新了jsfiddle:https://jsfiddle.net/dupxj3mu/3/

答案 1 :(得分:0)

谢谢,我找到了自己的解决方案。 https://jsfiddle.net/dupxj3mu/5/

function search_street() {
    $("#street").on("autocompletechange", function(event, ui) {
      if (ui.item === null) {
        $("#hiddenstreet").val($("#street").val());
        $("#street").val("");
        return false;
      }
    });
    if ($("#street").val() === "") {
      $("#street").val($("#hiddenstreet").val());    
      $("#street").focus();
      alert("Please select a street.");     
      $("#hiddenstreet").val("");
      return false;
    } else {
      address_search();
    }
  }

但是自动完成测试只运行一次,所以address_search()也会被错误的街道名称调用。我将在错误的输入上清空街道输入字段,并在DIV中将街道输入错误放在一边。然后address_search()将仅在正确选择时运行。