停止附加到提交事件的函数队列

时间:2018-02-14 12:52:51

标签: javascript

我有一个表单,并且它的提交事件附有2个不同的功能(参见下面的代码)。

// #1. that part of code does basic client side validation
form.addEventListener('submit', function(event) {
  if (form.checkValidity() === false) {
    event.preventDefault();
    event.stopPropagation();
  }
});

// #2. ajax request based on filled data on form
form.addEventListener('submit', function(event) {
  event.preventDefault();
  $.post(...); // AJAX request
});

如果验证(函数#1)没有通过,我想要避免使用AJAX逻辑(函数#2)。

是否可以停止排队,如果可以 - 我该怎么做?

由于

1 个答案:

答案 0 :(得分:0)

您必须将两个函数合并为一个,如下所示:

form.addEventListener('submit', function(event) {
    if (form.checkValidity() === false) {
        event.preventDefault();
        event.stopPropagation();
    } else {
        $.post(...); // AJAX request
    }
});

或以较短的方式:

form.addEventListener('submit', function(event) {
    if (form.checkValidity() === true) {
        $.post(...); // AJAX request
    }
});