javascript - 具有动态添加元素的 jQuery 中的自动完成

标签 javascript jquery ajax jquery-ui jquery-ui-autocomplete

我的要求是当用户在可能动态添加的输入字段之一中输入一些字符(最少 3 个)时显示几个选项。

因为数据量太大,一开始无法在页面加载时加载数据。有一个 ajax 调用来获取过滤后的数据。

我遇到的问题是第 2 行页面加载时出现 Expected identifier 错误。那么,您能告诉我以下代码有什么问题吗?

$(document).on('keydown.autocomplete', 'input.searchInput', function() {                
            source: function (request, response) { // Line # 2
            var id = this.element[0].id;

            var val = $("#"+id).val();             
            $.ajax({                     
                    type : 'Get',
                    url: 'getNames.html?name=' + val,
                    success: function(data) {
                        var id = $(this).attr('id');
                        $(this).removeClass('ui-autocomplete-loading'); 
                        response(data);
                    },error: function(data) {
                          $('#'+id).removeClass('ui-autocomplete-loading');  
                    }
                  });
              },
                minLength: 3
            });

最佳答案

如何使用另一种方法:在创建输入时初始化自动完成:

$(function() {

  // settings for each autocomplete
  var autocompleteOptions = {
    minLength: 3,
    source: function(request, response) {
      $.ajax({
        type: "GET",
        url: "getNames.html",
        data: { name: request.term },
        success: function(data) {
          response(data);
        }
      });
    }
  };

  // dynamically create an input and initialize autocomplete on it
  function addInput() {
    var $input = $("<input>", {
      name: "search",
      "class": "searchInput",
      maxlength: "20"
    });
    $input
      .appendTo("form#myForm")
      .focus()
      .autocomplete(autocompleteOptions);
  };

  // initialize autocomplete on first input
  $("input.searchInput").autocomplete(autocompleteOptions);
  $("input#addButton").click(addInput);
});
<form id="myForm" name="myForm" method="post">
  <input id="addButton" type="button" value="Add an input" />
  <input name="search" class="searchInput" maxlength="20" />
</form>

jsFiddle with AJAX

关于javascript - 具有动态添加元素的 jQuery 中的自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33410824/

相关文章:

javascript - 使用 jQuery 在 IE 中获取 JavaScript JSON 代码

javascript - 使用 animate() JQUERY 获取进度

javascript - 为什么 "this"在 Angular 指令中的链接函数中为空?

javascript - AngularJS:如果是原始的,则单击,或者如果脏且有效,则单击

javascript - 窗口加载选择div并淡出

javascript - 我可以使用什么来生成元素定位器的名称?

javascript - iPad Safari 按钮高亮问题

javascript - 如何在服务器响应后在 Symfony2 中显示警报或信息消息而不重新加载页面

javascript - React 是如何在不需要 jQuery 的情况下允许 $.ajax 的?

jquery - Ajax Jquery PUT 请求不起作用