我正在尝试在提交表单之前对其进行验证。我尝试了几种方法,但是在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();
        }
    });


控制台日志可以看到预期的输出(分别为“ here”,true,true,true)
现在,您第二次按下按钮时,表单提交。我也尝试了以下建议无济于事:

-> $("#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();
    }
});

09-25 18:21
查看更多