Javascript EasyAutocomplete-每个键控器上的ajax更新选项对象

Javascript EasyAutocomplete-每个键控器上的ajax更新选项对象,javascript,jquery,ajax,autocomplete,Javascript,Jquery,Ajax,Autocomplete,我有一个输入框,人们应该在其中键入城市名称,它应该动态自动完成,方法是将他们键入的内容发送到API,在后端将其与当前可用的作业进行匹配,然后通过ajax发送回一个结果数组,然后该数组应该动态更新选项数据数组,在EasyAutocomplete插件中 代码如下: $(function () { var minlength = 3; $(document).on('keyup','#mainSearch2',function( ) { var that = this,

我有一个输入框,人们应该在其中键入城市名称,它应该动态自动完成,方法是将他们键入的内容发送到API,在后端将其与当前可用的作业进行匹配,然后通过ajax发送回一个结果数组,然后该数组应该动态更新选项数据数组,在EasyAutocomplete插件中

代码如下:

$(function () {
    var minlength = 3;
    $(document).on('keyup','#mainSearch2',function( ) {
        var that = this,
        inputVal2 = $("#mainSearch2").val();

        if (inputVal2.length >= minlength ) {
            if (searchRequest != null) 
                searchRequest.abort();
            searchRequest = 
            $.ajax({
                  type: "POST",
                  url: 'myurltotheapi',
                  data: {
                    apiKey: "myapikey", // required
                    city: inputVal2,
                    page: 0, // optional, which page of the results, starts at "0", defaults to "0"
                    perPage: 20 // optional, results per page, defaults to "20"
                  },
                  success: function (apiResponse2){
                      if (inputVal2==$(that).val()) {
                    //Receiving the result of search here
                        options = {data: []};
                        options.data = apiResponse2.locations.map(function (el) {
                          return el.city+", "+el.state;
                        });
                        $("#mainSearch2").easyAutocomplete(options);
                     }
                    }
        });
        }
    });
});
因此,当前发生的情况是,在第三个字符之后的每一个关键点上,输入下的自动完成列表都会刷新到正确的值,但是整个窗口在显示结果后的一瞬间完全消失。输入框也会失去焦点,因此您必须手动单击“返回”,以键入更多内容(但您无法选择任何easyautocomplete结果,因为它们显示得太快,并且只在下一次按键时出现一秒钟)。在chrome开发工具中,.easy autocomplete”div类看起来像被删除并再次添加

我想知道是否有更好的方法,不用这些键盘,EasyAutocomplete是否支持在每次击键时动态发送值,并将内容从API结果拉到options.data数组&应用它而不会失去对输入框和Dissapering EasyAutocomplete结果窗口的关注

谢谢

答案如下:

$(function() {
    $('#mainSearch2').easyAutocomplete({
    url: 'myurl',
    ajaxSettings: {
      dataType: "json",
      method: "POST",
      data: {
        apiKey: "myapikey"
      }
    },
    listLocation: "suggestions",
    preparePostData: function(data) {
        data.query = $('#mainSearch2').val();
      return data;
    },
    requestDelay: 400
  });
});
答案如下:

$(function() {
    $('#mainSearch2').easyAutocomplete({
    url: 'myurl',
    ajaxSettings: {
      dataType: "json",
      method: "POST",
      data: {
        apiKey: "myapikey"
      }
    },
    listLocation: "suggestions",
    preparePostData: function(data) {
        data.query = $('#mainSearch2').val();
      return data;
    },
    requestDelay: 400
  });
});