我想知道是否有任何方法可以“撤消”提交时的preventDefault()方法。我有这个代码可以解决问题,但我想知道是否有更有效的方法。
var $form = $('form');
var canSubmit = false;
$form.data('working', false);
$form.submit(function(e){
if (form.validations.form($form)) {
if (!$form.data('working')) {
$form.data('working', true);
if (canSubmit) {
// make the post here
} else {
e.preventDefault();
$.get(BASE+'file.txt', function(response){
$form.data('canSubmit', true);
$form.submit();
});
}
}
} else {
$form.data('working', false);
e.preventDefault();
return false;
}
});
这是因为我必须在验证完成后读取和写入文件,然后才能将帖子发送到页面。 该帖子不能由ajax完成。
由于
答案 0 :(得分:1)
在您提交时,在处理e.preventDefault()
的后续实例时,您无法撤消e
。
return false
与e.preventDefault()
和 e.stopPropagation()
的效果相同,因此您只需返回标记即可简化代码。
var $form = $('form');
var canSubmit = false;
$form.data('working', false);
$form.submit(function(e){
if (form.validations.form($form)) {
if (!$form.data('working')) {
$form.data('working', true);
if (!canSubmit) {
e.preventDefault();
$.get(BASE+'file.txt', function(response){
canSubmit = true;
$form.submit(); // trigger recursive call
});
}
}
} else {
$form.data('working', false);
}
return canSubmit;
});