表格中的Event.preventDefault()和复选框?

时间:2014-01-09 17:13:57

标签: javascript jquery ajax

我有一个表单通过ajax发送,并带有event.preventdefault,因此它不会自动发送,但这会阻止复选框运行...
我该如何解决这个问题...
JSfiddle

$('[name="id"]').each(function (index, el) {
  var getval = $(this).val();
  console.log(getval);
  $('#form_pub_priv_' + getval).on('click', function (event) {
    event.preventDefault();
    var arr_unchecked_values = $('input[type=checkbox]:not(:checked)').map(function () {
      return this.value;
    }).get();
    var formvalues = $('#form_pub_priv_' + getval + ' [name="id"]').serialize();
    var dataJoin = '&mod=' + arr_unchecked_values + '&' + formvalues;
    console.log(dataJoin);
    $.ajax({
      url: 'unpublish-Lyst.html',
      type: 'POST',
      data: dataJoin
    })
    .done(function (data) {
      console.log(data);
    })
    .fail(function () {
      console.log("error");
    })
    .always(function () {
      console.log("complete");
    });
  });
});

1 个答案:

答案 0 :(得分:2)

您在复选框中间接停止click事件,这就是您的复选框不起作用的原因。

  $('#form_pub_priv_' + getval).on('click', function (event) {
      event.preventDefault();   //Remove this!
      var arr_unchecked_values = ...

要阻止表单被提交,您应该在tye submit表单事件中执行此操作。

  $('#form_pub_priv_' + getval).submit(function(event){
      ...
      event.preventDefault(); //Here it's ok
  });

干杯