1

我正在尝试按顺序执行一些代码,但无法使其正常工作。我想做的是:

var validate = function($form) {
    $form
        .find('[data-required]')
        .each(function() {
            if(Util.isEmpty($(this).val())) {
                $(this).addClass('error');
                Util.Notify(Util.ERROR, $(this).data('required'));
                return false;
            }
            else {
                $(this).removeClass('error');
            }
        });
};

var submit = function($form) {
  $.post(actionUrl, $form.serialize(), function(response) {
    //...
  });
};

validate(); // must execute first with no False return
submit();   // must execute second and only if validate() not returns False

但是,即使 validate() 返回 false,我的 $.post() 也会被执行。如何在执行验证并且未返回 false 后强制执行 submit()?我用谷歌搜索并根据人们发布的内容尝试了一些示例,但没有成功。

4

1 回答 1

3

当条件正确时,您可以submit()从内部调用,或者您可以这样做:validate()

if(validate()) {
    submit(); 
}

只需确保validate()在不为假时返回某些内容,因此 if 评估为true...

还要确保它return在正确的位置,就像现在一样,它是从内部的匿名函数返回的.each(),正如 Fabrício Matté 提到的那样......

于 2013-05-23T21:25:22.420 回答