JQuery不能将输入名称用作数组

时间:2018-03-15 08:00:04

标签: javascript jquery html

您好我创建了一个零行的表和一个“添加行按钮”,当用户点击“添加行按钮”时,使用javascript创建该表的一个额外行。在表格行中,我创建了三个输入字段作为名称,地址和手机号码。现在我想,当用户更改移动号码时,jquery必须调用如下所示,但它现在正在工作我该怎么办?

用于创建表行和jquery的代码,该代码无法正常工作。

<form action "..." mehtod="post">
  <table id="table1">
    <thead>
      <tr>
        <th>name</th>
        <th>address</th>
        <th>mobile</th>
      </tr>
    </thead>
    <tbody>
  </table>

  <button id="insertrowbutton" type="button" float: right;" onclick="insertrow()">Insert new row</button>

  <input type="submit" value="submit" name="submit">
</form>

<script>
  function insertrow() {
    document.getElementById("table1").insertRow(-1).innerHTML = '<td> <input type="text" name="name[]"> </td><td> <input type="text" name="address[]"></td>  <td><input type="number" name="mobile[]"</td>
  }
</script>
<script type="text/javascript">
  $('input[name^="mobile"]').on('change', function() {
    alert($(this).val());
  });
</script>

2 个答案:

答案 0 :(得分:0)

您一直在创建新元素,因此更改处理程序不会绑定到它们。请尝试这样做,这将确保应用更改侦听器。

$(document).on('change', 'input[name^="mobile"]',function() {
    alert($(this).val());
});

答案 1 :(得分:0)

使用它,它将起作用:

$(document).on('change', 'input[name^="mobile"]', function() {
  alert($(this).val());
});

请注意,您的按钮float: right;"

中的代码无效

<强>演示

function insertrow() {
  document.getElementById("table1").insertRow(-1).innerHTML = '<td> <input type="text" name="name[]"> </td><td> <input type="text" name="address[]"></td>  <td><input type="number" name="mobile[]"</td>'
}

$(document).on('change', 'input[name^="mobile"]', function() {
  alert($(this).val());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action "..." mehtod="post">
  <table id="table1">
    <thead>
      <tr>
        <th>name</th>
        <th>address</th>
        <th>mobile</th>
      </tr>
    </thead>
    <tbody>
  </table>

  <button id="insertrowbutton" type="button" onclick="insertrow()">Insert new row</button>

  <input type="submit" value="submit" name="submit">
</form>