Jquery 撤消默认值()方法

Jquery 撤消默认值()方法,jquery,Jquery,我想知道是否有任何方法可以在提交时“撤消”preventDefault()方法。我有这段代码,但我想知道是否有更有效的方法 var $form = $('form'); var canSubmit = false; $form.data('working', false); $form.submit(function(e){ if (form.validations.form($form)) { if (!$form.data('working')) {

我想知道是否有任何方法可以在提交时“撤消”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完成


谢谢

您无法撤消
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;
});

这样行吗<代码>$('form')。解除绑定('submit')我已经有一段时间没有处理过这个问题了,如果没有,请道歉!但是如果我取消了提交的绑定,它将无法发布是的,你是对的,我只在
单击
不提交时使用了此选项。我一点也没想到!我的badIt看起来像是在执行两步检查,因此不,您不能只撤消默认调用,因为它是在
e
的单独实例上进行的。你能解释一下你的“我必须在验证完成后读写一个文件”的评论吗,因为代码似乎不完整。在我做了第一次验证(姓名、电子邮件等)后,我需要做一个psedo ajax,只有在回复之后,帖子才会被删除continue@Kup:应该有帮助。基本上,您的函数在调用async
$后立即退出。get
,因此您不可能及时返回以修改以前的提交:)