表单提交即使通过jQuery返回false

时间:2012-10-05 17:50:02

标签: jquery forms submit return

我遇到的问题是表单仍然提交,即使代码是if或者所有字段为空都返回false。

我的HTML:

<form action="" method="post" name="contactForm" id="contactForm">
    <input type="text" name="contactName" id="contactName" class="contactTextfield" />
    <input type="text" name="contactPhone" id="contactPhone" class="contactTextfield" />
    <input type="text" name="contactEmail" id="contactEmail" class="contactTextfield" />
    <textarea name="contactMessage" id="contactMessage" class="contactTextarea" rows="5"></textarea>
    <input type="submit" name="contactSubmit" id="contactSubmit" value="Send"/>
</form>

我的jQuery:

$("#contactForm").submit( function() {
    var contactName = $("#contactName").val();
    var contactEmail = $("#contactEmail").val();
    var contactMessage = $("#contactMessage").val();
    var emailFormat = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;

    if ( contactEmail != '' && emailFormat.test(contactEmail) ) {
        var contactEmailCheck = true;   
    }

    if ( contactName != '' ) {
        var contactNameCheck = true;
    }

    if ( contactMessage != '' ) {
        var contactMessageCheck = true;
    }

    if ( contactEmailCheck == true && contactNameCheck == true && contactMessageCheck == true ) {
        return true;
    } else {
        return false;
    }
});

FIXED:

原来它没有用,因为jquery代码在索引页面的标题中,而表单本身只是通过ajax从一个单独的html文件加载到页面上。我不得不将jquery代码放在与表单相同的文件中。

2 个答案:

答案 0 :(得分:1)

这是一个范围问题..分配给if语句之外的变量..

试试这个

$("#contactForm").submit(function() {
    var contactName = $("#contactName").val();
    var contactEmail = $("#contactEmail").val();
    var contactMessage = $("#contactMessage").val();
    var emailFormat = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;

    var contactEmailCheck = false;
    var contactNameCheck = false;
    var contactMessageCheck = false;
    if (contactEmail != '' && emailFormat.test(contactEmail)) {
        contactEmailCheck = true;
    }

    if (contactName != '') {
        contactNameCheck = true;
    }

    if (contactMessage != '') {
        contactMessageCheck = true;
    }

    if (contactEmailCheck && contactNameCheck && contactMessageCheck) {
        return true;
    } else {
        return false;
    }
});​

答案 1 :(得分:0)

我会推荐这个: 首先将输入类型的发送按钮从“提交”更改为“按钮”。

<input type="button" name="contactSubmit" id="contactSubmit" value="Send"/>

在jquery文档就绪函数或您认为正确的任何其他位置将单击事件绑定到此按钮。点击“发送”按钮调用一个功能,您可以在其中执行所有验证,如果一切正常则从那里提交表单,否则会显示错误或警告。

#('#contactForm').click(function(){
    validateForm();
});

同样在你的函数中写的ro validate表格有一些范围问题。

function validateForm() {
    var contactName = $("#contactName").val();
    var contactEmail = $("#contactEmail").val();
    var contactMessage = $("#contactMessage").val();
    var emailFormat = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
    var contactEmailCheck = false;
    var contactNameCheck = false;
    var contactMessageCheck = false;

    if ( contactEmail != '' && emailFormat.test(contactEmail) ) {
        contactEmailCheck = true;
    }

    if ( contactName != '' ) {
        contactNameCheck = true;
    }

    if ( contactMessage != '' ) {
        contactMessageCheck = true;
    }

    if ( contactEmailCheck == true && contactNameCheck == true && contactMessageCheck ==     true ) {
        //submit form from here since everything is fine
        $('#contactForm').submit(); //contactForm is your form id
    } else {
        //show errors here & don't submit form
    }
}

试一试。肯定会工作。