为什么不阻止默认()停止重定向此表单提交?

时间:2016-09-16 20:42:58

标签: javascript jquery html forms

我一直在尝试使用jQuery提交此表单但我似乎无法在提交后停止重定向。我哪里错了?

我的表单已简化:

<form action="http://xxxxxxx" method="post" id="myform">
  <input type="text" name="my_field">
  <a class="last">Submit<a>
</form>

JS:

$('.last').on('click', function() {
  if ($('#myform').valid()) {
    $('#myform').submit();
  }

  $('#myform').on('submit', function(event) {
    event.preventDefault();

    $.getJSON(
      this.action + "?callback=?",
      $(this).serialize(),
      function(data) {
        if (data.Status === 400) {
          alert(data.Message);
          $('#noti').text(error).addClass('notice-error', function() {
            $('.last').attr('id', '#contact-us-btn').addClass('button-error').html('Contact us');
          });
          $('#contact-us-btn').on('click', function() {
            zE(function() {
              zE.show();
            });
          });
        } else {
          console.log(data.Message);
          $('#step-3').slideUp(function() {
            $('#noti').text(success).addClass('text-success');
            $('.next, .previous').fadeOut();
            $('.panel.success').slideDown();
          });
        }
      }
    )
  });
});

2 个答案:

答案 0 :(得分:2)

这不是订单,问题是第二个事件是在第一个事件函数内部分配的(基本上它会在点击之后分配,因此表单提交)。

printf

答案 1 :(得分:0)

我相信你的事情发生了一些故障。目前,在绑定自定义处理程序之前,您将触发默认提交行为。因此,首先绑定处理程序,然后启动提交:

  $('#myform').on('submit', function(event) {
    event.preventDefault();

    $.getJSON(
      this.action + "?callback=?",
      $(this).serialize(),
      function(data) {
        if (data.Status === 400) {
          alert(data.Message);
          $('#noti').text(error).addClass('notice-error', function() {
            $('.last').attr('id', '#contact-us-btn').addClass('button-error').html('Contact us');
          });
          $('#contact-us-btn').on('click', function() {
            zE(function() {
              zE.show();
            });
          });
        } else {
          console.log(data.Message);
          $('#step-3').slideUp(function() {
            $('#noti').text(success).addClass('text-success');
            $('.next, .previous').fadeOut();
            $('.panel.success').slideDown();
          });
        }
      }
    )
  });

$('.last').on('click', function() {
  if ($('#myform').valid()) {
    $('#myform').submit();
  }
});