PHP JavaScript验证错误

PHP JavaScript验证错误,javascript,php,html,form-submit,Javascript,Php,Html,Form Submit,我以为我已经解决了这个问题,但我的问题还在发生 每次单击“发送”,我的表单仍会发送。我以为我的JavaScript正确地验证了表单,但它不起作用,因为我可以在电子邮件字段中放入任何内容,而且它仍在处理。警报仍然有效。我只想使用PHP和JavaScript,而不是AJAX或任何东西。这是我的密码: <?php $to = 'email@email.com'; $subject = 'Voice4Autism Inquiry'; $FirstName = $_POST['fname'];

我以为我已经解决了这个问题,但我的问题还在发生

每次单击“发送”,我的表单仍会发送。我以为我的JavaScript正确地验证了表单,但它不起作用,因为我可以在电子邮件字段中放入任何内容,而且它仍在处理。警报仍然有效。我只想使用PHP和JavaScript,而不是AJAX或任何东西。这是我的密码:

<?php

$to = 'email@email.com';
$subject = 'Voice4Autism Inquiry';

$FirstName = $_POST['fname'];
$LastName = $_POST['lname'];
$eMail = $_POST['email'];

$message = <<<EMAIL

Hi!<br /><br/>

My name is $FirstName $LastName.  I am interseted in your newsletter from Voice4Autism.  Please add $eMail to your listserve.<br /><br />

Thank you,<br />
$FirstName $LastName

EMAIL;

$header = "From: $eMail\r\n";
$header = "Content-type: text/html\r\n";

if($_POST){
    mail($to, $subject, $message, $header);
}
?>

JAVASCRIPT

<script type="text/javascript">
function checkforblank() {
    var errormessage = "";

    if (document.getElementById('fname').value ==""){
        errormessage += "enter your first name \n";
    }
    if (document.getElementById('lname').value ==""){
        errormessage += "enter your last name \n";
    }
    if (document.getElementById('email').value ==""){
        errormessage += "enter your email \n";
    }
    if (document.getElementById('confirmEmail').value ==""){
        errormessage += "confirm your email \n";
    }

    if (errormessage != ""){
        alert(errormessage);
        return false;
    } else return true;
}

function verifyEmail() {
    var status = false;     
    var emailRegEx = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;

    if (document.myForm.email.value.search(emailRegEx) == -1) {
              alert("Please enter a valid email address.");
              return false;
    }


    if (document.getElementById('email').value == document.getElementById('confirmEmail').value) {
        alert("Thank you for your interest!");
            return true;              
    } else {
        alert("Email addresses do not match.  Please retype them to make sure they are the same.");
        return false;
    }

    return status;
}

function confirmEmailAddresses(){
    if (checkforblank() == true) {
        if (verifyEmail() == true) {
            document.getElementById("myForm").submit();
        }
    } 
}
</script>

函数checkforblank(){
var errormessage=“”;
if(document.getElementById('fname')。值==“”){
errormessage+=“输入您的名字\n”;
}
if(document.getElementById('lname')。值==“”){
errormessage+=“输入您的姓氏\n”;
}
if(document.getElementById('email')。值=“”){
errormessage+=“输入您的电子邮件\n”;
}
if(document.getElementById('confirmEmail')。值=“”){
errormessage+=“确认您的电子邮件\n”;
}
如果(errormessage!=“”){
警报(错误消息);
返回false;
}否则返回true;
}
函数verifyEmail(){
var状态=假;
var emailRegEx=/^[A-Z0-9.[UZ0%+-]+@[A-Z0-9.-]+\[A-Z]{2,4}$/i;
if(document.myForm.email.value.search(emailRegEx)=-1){
警报(“请输入有效的电子邮件地址”);
返回false;
}
if(document.getElementById('email').value==document.getElementById('confirmEmail').value){
警惕(“感谢您的关注!”);
返回true;
}否则{
警报(“电子邮件地址不匹配。请重新键入以确保它们相同。”);
返回false;
}
返回状态;
}
函数confirmEmailAddresses(){
if(checkforblank()==true){
如果(verifyEmail()==true){
document.getElementById(“myForm”).submit();
}
} 
}
HTML


名字:
姓氏:
电邮:
确认电子邮件:

您可以试试

return false; 

在每次alert()调用之后

我想这就是你想要的:

<script>
function checkforblank() {
    var errormessage = "";

    if (document.getElementById('fname').value ===""){
        errormessage += "enter your first name \n";
    }
    if (document.getElementById('lname').value ===""){
        errormessage += "enter your last name \n";
    }
    if (document.getElementById('email').value ===""){
        errormessage += "enter your email \n";
    }
    if (document.getElementById('confirmEmail').value ===""){
        errormessage += "confirm your email \n";
    }

    if (errormessage !== ""){
        alert(errormessage);
        return false;
    } 
    else{return true;}
}

function verifyEmail() {
    var status = false;     
    var emailRegEx = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;
    var email_reg = document.getElementById('email').value;

    if (!email_reg.match(emailRegEx)) {
              alert("Please enter a valid email address.");
              return false;
    }


    else if (document.getElementById('email').value !== document.getElementById('confirmEmail').value) {
        alert("Email addresses do not match.  Please retype them to make sure they are the same.");
            status = false;            
    } else {
        alert("Thank you for your interest!");
        status = true;
    }

    return status;
}

function confirmEmailAddresses(){
    if((checkforblank())&&(verifyEmail())){return true;}else{return false;}


}

函数checkforblank(){
var errormessage=“”;
if(document.getElementById('fname')。值=“”){
errormessage+=“输入您的名字\n”;
}
if(document.getElementById('lname')。值=“”){
errormessage+=“输入您的姓氏\n”;
}
if(document.getElementById('email')。值=“”){
errormessage+=“输入您的电子邮件\n”;
}
if(document.getElementById('confirmEmail')。值=“”){
errormessage+=“确认您的电子邮件\n”;
}
如果(errormessage!==“”){
警报(错误消息);
返回false;
} 
else{return true;}
}
函数verifyEmail(){
var状态=假;
var emailRegEx=/^[A-Z0-9.[UZ0%+-]+@[A-Z0-9.-]+\[A-Z]{2,4}$/i;
var email_reg=document.getElementById('email')。值;
如果(!email_reg.match(emailRegEx)){
警报(“请输入有效的电子邮件地址”);
返回false;
}
else if(document.getElementById('email').value!==document.getElementById('confirmEmail').value){
警报(“电子邮件地址不匹配。请重新键入以确保它们相同。”);
状态=假;
}否则{
警惕(“感谢您的关注!”);
状态=真;
}
返回状态;
}
函数confirmEmailAddresses(){
if((checkforblank())&&(verifyEmail()){return true;}else{return false;}
}
并按如下方式调用此函数:

<form name="a" method="post" onSubmit="return confirmEmailAddresses()" action="xyz.html" id="a">

这不是你想要的吗?如果表单无效,您希望显示警报而不提交表单,对吗


查看调用confirmEmailAddresses()的html表单可能会有所帮助。

尝试从提交按钮中删除
onClick
事件,然后添加
返回confirmEmailAddresses()
到主表单元素的
onsubmit
事件


确保
confirmEmailAddresses()
函数的行
返回true如果验证通过!Else
返回false

请你把表格贴在HTML上好吗。谢谢你今天做的!抱歉耽搁了!谢谢我已经在下面给出了答案!希望有帮助?谢谢你的提示!我要试试看。在我每次打警报电话后,我都要澄清一下?表单在Firefox和Chrome中提交很好,但在Safari中提交不好。因此我尝试了“return false”,但它现在在任何浏览器中都无法工作。还有其他建议吗?我非常感谢你的帮助!无效表单仅在Safari中发送。真奇怪!我感谢你的帮助!我还在努力!如果根本没有填写,它仍然会发送空白表单。@user2638775您到底在哪里调用“confirmeailaddresses()”?调用在JavaScript中,然后附加到“提交”按钮。试试我发布的代码,您只需在yur代码中更改表单的名称,就像在我的代码中,表单的名称是“a”@user2638775:如果您在使用我的代码时遇到任何问题,请务必告诉我。从现在起6小时后我就可以上班了。)我已经完成了所有这一切,但没有成功。:(我感谢你的帮助。这是我的代码:函数confirmMailAddresses(){if(checkforblank()==true){if(verifyEmail()==true){document.getElementById(“myForm”).submit();return false;}我还有:confirmMailAddresses()函数{if((checkforblank())&&(verifyEmail()){return true;}函数{return false;}而不是“document.getElementById(“myForm”).submit();”试着使用“return true;”。如果您像上面所述调用函数“onsubmit”,确保它显示“return confirmMailAddress()”;“表单现在希望返回true或false。很抱歉,我以前忽略了这一点!
<form name="a" method="post" onSubmit="return confirmEmailAddresses()" action="xyz.html" id="a">