选中复选框的行表中的表单中没有复选框数据

时间:2019-04-10 06:48:08

标签: javascript html forms

在表格中,每一行都包含一个复选框,格式如下:

<td class="d-inline-block col-2">
        <div class="form-check">
          <form action="/slider-update/1" method="post" id="check-1">
            <input type="hidden" name="csrfmiddlewaretoken" value="uDIiSPShbE3R2COQDI0qE4SlJGiqsQy8CQ2nQ0jllibaOqH6YsU8TtL7Xy0pF8sI">
            <input class="form-check-input position-static" type="checkbox" id="1" value="is_active" aria-label="...">
          </form>
        </div>
 </td>

每种形式都由一个以pk格式设置的ID标识(此处为“ check-1”)。尽管有所有这些清楚的信息,但我仍无法获得表格!

这是我的JavaScript代码:

    $(document).on('click', 'form', function () {
      var rpk = $(this).attr("id");
      var url = $(this).attr("action");
      var form = $('#' + rpk);
      $.post(url, form.serializeArray())
          .done(function (data) {
              alert( data );
          });
  }); 

我得到了正确的表格,但它只包含令牌,与复选框无关。

1 个答案:

答案 0 :(得分:1)

您需要将name属性设置为您的复选框。 jQuery文档在serializeArray

这样会更改您的代码:

 <input class="form-check-input position-static" type="checkbox" id="1" name= "checkbox-1" value="is_active" aria-label="...">

也在您的JavaScript代码中。不需要

var form = $('#' + rpk);

您可以使用

$(this).serializeArray()

那是:

    $(document).on('click', 'form', function () {
      var url = $(this).attr("action");
      $.post(url, $(this).serializeArray())
          .done(function (data) {
              alert( data );
          });
  });