Jquery自动完成不适用于动态添加的行(输入)

时间:2015-10-27 18:39:10

标签: jquery json ajax autocomplete

当我点击并开始在JSON文件上键入国籍时,加载了自动完成功能。没关系。预览:http://mijaumijau.com/forma-b/

HTML

<input id="tags" style="text-transform: capitalize;">
<div class="append"></div>
<div class="add-more" style="font-size: 20px; border: 1px solid #000; width:20px;">+</div>

JQUERY

$("#tags").autocomplete({

        source: function(request, response) {
            $.ajax({
                url: "nat.json",
                dataType: "json",
                data: { term: request.term },


                success: function (data) {
                    var tag_val = $("#tags").val();
                    response($.map(data, function (item) {

                    //filtering results....
                        if (item.nationality.indexOf(tag_val) != -1) {
                            return {
                                label: item.nationality
                            };
                        }
                    }));
                }
            });
        }
    });

现在开启'+'(添加更多)btn我试图添加一个加载相同json自动完成文件的输入字段。

$(function(){
      $('.add-more').click(function(){
         var newItem = '<br><input id="tags" style="text-transform: capitalize;">';
         $('.append').append(newItem);
         $('#tags').autocomplete({
            source: function(request, response) {
            $.ajax({
                url: "nat.json",
                dataType: "json",
                data: { term: request.term },


                success: function (data) {
                    var tag_val = $("#tags").val();
                    response($.map(data, function (item) {

                    //filtering results....
                        if (item.nationality.indexOf(tag_val) != -1) {
                            return {
                                label: item.nationality
                            };
                        }
                    }));
                }
            });
        }

         });
      });
   });

输入字段添加.append但它不会加载json文件以选择“国籍”。我试图附加新ID(#tags2)并且它可以工作,但是我不得不复制代码这么多次我想加载新的输入字段。

有没有办法在点击时生成输入字段,以便重新获得新的#ID? 感谢

1 个答案:

答案 0 :(得分:0)

  1. 使用class而不是id进行识别。
  2. 使用函数返回自动完成对象。
  3. 使用$(this)代替选择器。