在jquery函数之后没有执行JavaScript语句

时间:2017-05-17 15:26:51

标签: javascript jquery

我有以下HTML

<form onsubmit="call_it()" action="listing.php" method="get">

在被调用的函数中,alert('3')未被调用。 jQuery each函数工作正常,但不确定为什么之后没有执行任何操作。

function call_it() {
  alert('2');

  $('.form_field').each(function(i, obj) {
    if (this.value == "") {
      document.getElementById(this.id + '_blank').style.display = "block";
    }
  });

  alert('3');
  ///other statements
}

1 个答案:

答案 0 :(得分:1)

  

我在<form onsubmit="call_it()" action="listing.php" method="get">

上打电话给我

在这种情况下,问题是因为表单实际上正在提交。因此,在达到alert('3')之前,页面被卸载,并且所有JS处理都被取消。

要解决此问题,请先删除过时的on*事件处理程序,然后使用不显眼的JS附加事件处理程序,其次,如果验证失败,请停止提交表单。试试这个:

<form action="listing.php" method="get" id="theForm">
  <!-- HTML inputs here... -->
</form>
$('#theForm').submit(function(e) {
  alert('2');

  $('.form_field').each(function(i, obj) {
    if (!this.value) {
      e.preventDefault();
      $('#' + this.id + '_blank').show();
    }
  });

  alert('3');
});

Working example