表单提交,即使jQuery返回false

表单提交,即使jQuery返回false,jquery,forms,submit,return,Jquery,Forms,Submit,Return,我遇到的问题是,即使在和或所有字段都为空时,代码返回false,表单仍会提交 我的HTML: <form action="" method="post" name="contactForm" id="contactForm"> <input type="text" name="contactName" id="contactName" class="contactTextfield" /> <input type="text" name="conta

我遇到的问题是,即使在和或所有字段都为空时,代码返回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代码位于索引页面的标题中,而表单本身仅通过ajax从单独的html文件加载到页面上。我必须将jquery代码与表单放在同一个文件中。

这是一个范围问题。。在if statemenets.之外为您分配变量

试试这个

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

这是一个范围问题。。在if statemenets.之外为您分配变量

试试这个

$("#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;
    }
});​
我建议: 首先将发送按钮的输入类型从“提交”更改为“按钮”

<input type="button" name="contactSubmit" id="contactSubmit" value="Send"/>
此外,在您编写的函数中,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
    }
}
试试看。肯定会有用。

我建议: 首先将发送按钮的输入类型从“提交”更改为“按钮”

<input type="button" name="contactSubmit" id="contactSubmit" value="Send"/>
此外,在您编写的函数中,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
    }
}

试试看。肯定会有用。

没有区别。例如,如果未将其设置为true
contactName==''
,则contactNameCheck将被取消定义。没有错误。如果javascript中的语句作用域变量有函数作用域,而不是块作用域,那么最后一个if语句(undfind!=true)JS没有
if语句作用域也会正确处理它。将变量声明移到函数顶部是一种很好的做法,可以提高代码的可读性,但不是必需的。由于变量的提升,在使用
var
声明变量之前,实际上可以使用变量。没有区别。例如,如果未将其设置为true
contactName==''
,则contactNameCheck将被取消定义。没有错误。如果javascript中的语句作用域变量有函数作用域,而不是块作用域,那么最后一个if语句(undfind!=true)JS没有
if语句作用域也会正确处理它。将变量声明移到函数顶部是一种很好的做法,可以提高代码的可读性,但不是必需的。由于变量的原因,在使用
var
声明变量之前,实际上可以使用变量。请参阅。我发现在
return false
不起作用时,哪些数据输入到字段中没有问题?请参阅。我看不出有什么问题当
return false
不起作用时,哪些数据被输入到字段中?谢谢你的帮助。结果证明它不起作用,因为jquery代码在索引页面的标题中,而表单本身只是通过ajax从一个单独的html文件加载到页面上。我不得不将jquery代码与表单放在同一个文件中。感谢您的帮助。结果证明它不起作用,因为jquery代码位于索引页面的标题中,而表单本身仅通过ajax从单独的html文件加载到页面上。我必须将jquery代码与表单放在同一个文件中。