表单提交不会停止进行验证

时间:2011-10-03 15:57:05

标签: javascript jquery javascript-events validation

我想要完成的是使用jquery的(非常简单的)电子邮件验证,但无论我做什么,表单都会继续提交。

<form id="rfq" name="rfq" action="rfq_form" method="post" enctype="multipart/form-data"> ...

<input type="image" id="submit" name="submit" src="submit.png" border="0" />

JS电子邮件验证:

//$("#rfq").submit(function() { doesnt seem to work either

$('#submit').click(function() {
    var email = $('#email').val();
    if(email.indexOf("@") == -1){
        $("#email").addClass('invalid');
        return false; // cancel form submission if email invalid
    }
    return false; // return true if no errors once i get it working
});

4 个答案:

答案 0 :(得分:4)

Working Example

首先,确保在DOM “准备好”后连接所有事件处理程序

我在实际表单上使用.submit()

$(document).ready(function() {
    // now that document is "ready"
    $('#formId').submit(function() {
        var email = $('#emailInput').val();
        alert(email);
        if(email.indexOf("@") == -1){
            alert("invalid!");
            return false; // cancel form submission if email invalid
        }
        alert("valid!");
        return true; // return true if no errors once i get it working 
    });
});

答案 1 :(得分:3)

尝试将代码包装在就绪块中。

$(document).ready(function(){
    // your code here
});

我认为你应该在submit元素上使用<form>事件。

答案 2 :(得分:2)

这将起作用。如果你不明白为什么,请随意问:)

var validated = false;

$(document).ready(function(){
    $("#rfq").submit(function(event) {
        if (validated === true) {
            return true;
        }
        event.preventDefault(); // prevent submission
        var email = $('#email').val();
        if(email.indexOf("@") == -1){
            $("#email").addClass('invalid');
            return;
        }
        validated = true;
        return $(this).trigger('submit');
    });
});

答案 3 :(得分:1)

您可以尝试使用此功能验证您的地址。

function validateEmail(elementValue){
   var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
   return emailPattern.test(elementValue);
 }

然后修改您的代码以提交表单。

$('#submit').click(function() {
    var email = $('#email').val();
    if(!validateEmail(email)){
        $("#email").addClass('invalid');            
    }
    else {
       $("form").submit();
    }
});