我正在尝试按顺序执行一些代码,但无法让它工作。我想做的是:
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()也会被执行。如何在执行validate后强制执行submit()并且不返回false?我用Google搜索并根据人们发布的内容尝试了一些示例,但未成功。
答案 0 :(得分:3)
如果条件正确,您可以在submit()
内致电validate()
,或者您可以这样做:
if(validate()) {
submit();
}
请确保validate()
在非假时返回内容,因此if评估为true
...
同时确保return
位于正确的位置,就像现在一样,它正从.each()
内的匿名函数返回,正如FabrícioMatté所提到的那样......