撤消preventDefault()方法

时间:2015-08-07 10:19:36

标签: 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')) {
            $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完成。

由于

1 个答案:

答案 0 :(得分:1)

在您提交时,在处理e.preventDefault()的后续实例时,您无法撤消e

return falsee.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;
});