仅在提交时执行jquery

时间:2016-03-16 18:04:39

标签: jquery validation if-statement

我想做什么

我使用以下脚本来验证表单提交。我有一个动态填充数据的文本框“#MemberIDs”,即“,100,101,105”。我希望在提交表单时删除第一个逗号,但直到第一个“if语句”通过验证时才删除。

问题

电子邮件验证工作正常,但无论电子邮件通过验证还是验证失败,第二个“if语句”都不会执行。如果我删除第二个“if语句”并只使用替换脚本,它将删除逗号,无论电子邮件通过还是验证失败。

$("form").submit(function (e) {
    var email = $('#Email').val();
    var email2 = $('#Email2').val();
    var pattern = /^\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b$/i
    if (!pattern.test(email) || email != email2) {
        alert('You either entered an invalid E-mail address, or the \"Email\" and \"E-mail Confirm\" do not match.');
        e.preventDefault(e);
    }
    if ($("form").valid()) {
        var mid = $('#MemberIDs').val().replace(/^[,]/, '');
        $('#MemberIDs').val(mid);
    }
});

1 个答案:

答案 0 :(得分:1)

你真的不需要第二个if语句。 如果测试通过了reg ex,那么您可以将以下操作放入else{}

以下是我的意思:

$("form").submit(function (e) {
    e.preventDefault();
    var email = $('#Email').val();
    var email2 = $('#Email2').val();
    var pattern = /^\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b$/i
    if (!pattern.test(email) || email != email2) {
        alert('You either entered an invalid E-mail address, or the \"Email\" and \"E-mail Confirm\" do not match.');
    }       
    else {
        var mid = $('#MemberIDs').val().replace(/^[,]/, '');
        $('#MemberIDs').val(mid);
        // form submission here? AjAX?
        $.ajax({
            // Whatever you need
        )}
    }           
});

JS Fiddle