表单提交后防止默认

Form submit after preventDefault

本文关键字:默认 表单提交      更新时间:2023-09-26

我正在尝试在提交表单之前对其进行验证。 我已经尝试了几种方法,但是在 preventDefault 之后无法提交表单。 这是我目前拥有的代码:

$('#formquote').submit(function(e){
        e.preventDefault(); 
        console.log('here');
        validating = true;
        var tval = valText('input[name=contactname]');
        var pval = valPhone('input[name=telephone]');
        var eval = valEmail('input[name=email]');
        console.log(tval);
        console.log(pval);
        console.log(eval);
        if(tval && pval && eval){
            $("#formquote").unbind('submit');
            $("#formquote").submit();
        }
    });

控制台日志您可以按预期看到输出(分别为"此处"、"真"、"真"、"真")在您第二次按下按钮时,表单提交。 我也尝试了以下建议,但无济于事:

-> $("#formquote").unbind('submit').submit(); //same result
-> $("#formquote").submit(); //by itself, infinite loop
-> $("#formquote")[0].submit(); //non function error
-> $('#formquote').unbind('submit', preventDefault); //'preventDefault' not defined

任何帮助将不胜感激

与其总是阻止表单提交,进行验证并在通过时再次提交,不如在验证失败时阻止提交?像这样:

$('#formquote').submit(function (e) {
    validating = true;
    var tval = valText('input[name=contactname]');
    var pval = valPhone('input[name=telephone]');
    var eval = valEmail('input[name=email]');
    if (!(tval && pval && eval)) {
        e.preventDefault();
    }
});

我想接受的答案是最好的方法,但如果由于某种原因,您需要先使用 preventDefault() 然后提交表单,这对我有用:

$('#formquote').on('submit', function (e) {
  e.preventDefault();
  // Do validation stuff..
  // Then submit the form
  $(this).submit();
}