如果选中复选框,则在所有输入中分配输入值

时间:2018-03-07 19:19:40

标签: jquery

我有一个从数据库中获取行的表。每一行都包含一个输入和一个复选框。

在第一行中插入值后,然后单击复选框,此值将分配给下面的所有行。

但是如果我开始在第二行或其他行中插入值并单击它旁边的复选框,则该操作不会像第一行那样工作。

如何在单击下面所有行旁边的复选框后分配输入值,而不是输入上方的行?

谢谢大家的进步。

<table class="table table-striped  tabinp hideal">
  <tr>
    <th>Price</th>
  </tr>

  <?php 
  foreach($prices as $row)
  { 
  ?>
  <tr>
    <td>
      <div class="input-group">
        <span class="input-group-addon">$</span>
        <input type="text" class="price form-control">
        <span class="input-group-addon"><input class="put-all-price" type="checkbox"></span>
      </div>
    </td>
  </tr>
  <?php
  }
  ?>
</table>
<script src="https://code.jquery.com/jquery-2.2.0.min.js" type="text/javascript"></script>

<script>
  $(".put-all-price").on("click", function() {
    var price = $(".price").val();
    if ($(this).is(":checked")) {
      $('.price').each(function() {
        $(this).val(price);
      });
    } else {
      $('.price').each(function() {
        $(this).val("");
      });
    }
  })
</script>

1 个答案:

答案 0 :(得分:1)

首先:在每行的代码中,您总是从第一行中选择价格。你可以用这个:

var price = $($(this).parents()[1]).find(".price").val();

第二:迭代仅 的元素,您可以使用 .nextAll()

$($(this).parents()[3]).nextAll().find(".price").each(function() {
  $(this).val(price);
});

请注意, .parents()[index] 取决于您的标记。