【问题标题】:How to add input field using jQuery and call Ajax into new input field如何使用 jQuery 添加输入字段并将 Ajax 调用到新的输入字段中
【发布时间】:2016-06-20 14:26:06
【问题描述】:

我正在使用带有输入字段的表格。我使用 jQuery 添加新的行/输入字段,然后我想将 Ajax 调用到新的行/输入字段中。但它不起作用。因为它没有填满document.ready()函数的条件..

这是我的 html 表单:

<table>
<thead>
<tr>
    <th>Account Name:</th>
    <th>Branch:</th>
</tr>
</thead>
<tr>
    <td>
        <div>
             <input type="text" name="ac_name" class="auto-search-ac">
        </div>
    </td>
    <td>
        <div>
            <input type="text" name="branch">
        </div>
    </td>
</table>

在表格中添加新行的脚本(它运行良好):

<script>
$(document).on("focus",'#table tr:last-child td:last-child',function() {
        //append the new row here.
        var table = $("#table");

        table.append('<tr>\
        <td style="width:250px;"><div> <input type="text" name="ac_name" class="auto-search-ac"></div>\
         </td>\
        <td><div><input type="text" name="branch"></div>\
        </td>\
       </tr>');
   });
   </script>

Ajax 调用新插入的输入字段:: (在第一行 - ajax 运行良好)

<script type="text/javascript">

$(".auto-search-ac").autocomplete({
    source: "/ca-list",
    minLength: 1,
    select: function( event, ui ) {
        $('.auto-search-ac').val(ui.item.value);
        $('#ca-id-val').val(ui.item.ca_id);
    }
});

</script>

注意 :: 我在 Modal 中使用所有脚本和 html。在第一行,一切正常。

通过 jQuery 添加新行后,我无法调用 ajax。可能是document.ready() 的问题。

问题:在 html 中使用 jquery 添加新的输入字段/行后,如何调用任何脚本/ajax/jQuery?感谢高级。

【问题讨论】:

  • auto-search-ac 在行中是class,在autocomplete 的脚本中是id
  • @MoshFeu :: 我已经更新了..请看一下
  • 有@Rayon Dabre 回答你的问题吗?
  • @MoshFeu :: 仍然没有找到结果。在第一行它正在工作,但从第二行它不工作
  • @Rayon Dabre 的答案似乎适合我。 A. 向他寻求更多解释。 B. console 中的任何错误? C. 你有一个公共 URL(或者你可以创建一个)吗?所以我们可以和你一起调试它。

标签: javascript jquery html ajax dom


【解决方案1】:

使用类选择器,因为您没有像auto-search-ac 这样的元素。追加元素后,从追加的tr中找到类为auto-search-ac的元素,初始化autocomplete

试试这个:

$(".auto-search-ac").autocomplete({
  source: "/ca-list",
  minLength: 1,
  select: function(event, ui) {
    alert(ui.item.value);
    alert(ui.item.ca_id);
  }
});


$(document).on("focus", '#table tr:last-child td:last-child', function() {
  var table = $("#table");
  var element = '<tr>\
        <td style="width:250px;"><div> <input type="text" name="ac_name" class="auto-search-ac"></div>\
         </td>\
        <td><div><input type="text" name="branch"></div>\
        </td>\
       </tr>';
  table.append(element);

  $("#table tr:last-child").find(".auto-search-ac").autocomplete({
    source: "/ca-list",
    minLength: 1,
    select: function(event, ui) {
      alert(ui.item.value);
      alert(ui.item.ca_id);
    }
  });
});
<table id='table'>
  <thead>
    <tr>
      <th>Account Name:</th>
      <th>Branch:</th>
    </tr>
  </thead>
  <tr>
    <td>
      <div>
        <input type="text" name="ac_name" class="auto-search-ac">
      </div>
    </td>
    <td>
      <div>
        <input type="text" name="branch">
      </div>
    </td>
</table>

Fiddle demo

【讨论】:

  • @Rayon Dabre:: 插入新输入字段时它不起作用。
  • @Rayon Dabre:在第一行它正在工作,但从第二行开始它不工作
  • @Rayon Dabre:让我们尝试分享到 Filldle ...但问题将是自动完成数据
  • @Ryaon Dabre :: 真棒。这是完美的。非常感谢。
  • @Ryaon Dabre :: 这个小提琴有什么区别 :: jsfiddle.net/selimppc/FRbcr/70 ???
猜你喜欢
  • 2016-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-10
  • 1970-01-01
  • 1970-01-01
  • 2015-07-13
  • 2014-02-12
相关资源
最近更新 更多