0

还有其他关于使用 javascript 验证电子邮件地址的问题。还有关于验证表格的问题。但是,我无法让我的代码正常工作,也无法找到涵盖此特定问题的问题。

编辑

我完全理解在实时网站中,服务器端验证至关重要。我也了解发送电子邮件确认的价值。(我实际上有一个具有所有这些功能的网站)。我知道如何在 php 中编写垃圾邮件检查代码。

在这种情况下,我被要求验证电子邮件输入字段。我必须严格遵守 xhtml 1.0,因此不能使用“电子邮件”类型,并且不允许我使用服务器端脚本进行此分配。我无法组织电子邮件确认,它必须通过 javascript 完全检查。

我希望这能澄清我的问题

我正在尝试为两件事验证表单。

检查所有字段是否都有数据。查看是否输入了有效的电子邮件地址。

我能够验证数据的表单字段,但尝试合并电子邮件检查对我来说是个麻烦。

它以前发出警报,但不正确,现在它根本没有被调用(或者至少它是这样的)。

一旦我完成这项工作,我就需要专注于检查电子邮件地址是否匹配。然而,这是这个问题之外的问题。

我只专注于在javascript. 我不关心这个特定实例中的服务器端(这个问题之外的另一个问题)。谢谢。

function Validate()
        {
            var inputs = [document.getElementById('fname'),_
 document.getElementById('lname'), document.getElementById('email1'),_
 document.getElementById('email2')];

            for(var i = 0; i<inputs.length; i++)
            {
                if(inputs[i].value == '')
                {
                   alert('Please complete all required fields.');
                    return false;
                    }

                    else if ((id =='email1' || 'email2') &&_
(inputs[i].value!= /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/ )){
                        alert('Please enter a valid email address.');
                        return false;
                    }
            }
         }


<form onsubmit="return Validate()"  action="" method="post"  id="contactForm" >
 <input  type="text"  name="fname" id="fname"  />

 <input  type="text"  name="lname" id="lname" />

 <input   type="text"  name="email1"  id="email1" />

 <input   type="text"  name="email2"  id="email2"/>

 <input type="submit" value="submit" name="submit"  />
</form>

旁注 - 格式化换行的文本,是否可以(为了发布问题,添加和下划线并创建一个新行以提高可读性?在实际文本中我没有这个!请告知是否有一种更简单的方法来格式化我的帖子代码。再次感谢。

编辑 2

当我注释掉它时它起作用:

/*else if ((id =='email1' || id=='email2') && (inputs[i].value!= /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/ )){
    alert('Please enter a valid email address.');
        return false;
}*/

因此,这有助于排除故障。

4

4 回答 4

3
 var a=document.getElementById('fname');
 var b=document.getElementById('lname');
 var c=document.getElementById('email1');
 var d=document.getElementById('email12')

if(a==""||b==""||c==""||d=="")
 {
 alert('Please complete all required fields.');
 return false;
 }
于 2013-06-26T14:44:37.813 回答
3

验证电子邮件地址的最佳方法是将电子邮件发送到该地址。正则表达式不适用于验证电子邮件地址。您可能能够验证正常的电子邮件地址,例如 john.doe@email.com,但如果您使用正则表达式,您将拒绝其他有效的电子邮件地址

检查电子邮件地址的正则表达式识别困难吗? AND:使用正则表达式验证电子邮件地址

于 2013-06-26T14:48:25.757 回答
3

我已经在那里看到了一个语法错误:

else if ((id =='email1' || 'email2') 

应该

else if ((id =='email1' || id=='email2') 

从我看到它的地方。

另请注意,在任何字段中输入空格也将通过测试:在测试空值时,您应该修剪字段值。

最后,关于验证电子邮件,这不是您使用正则表达式的方式。请阅读这篇文章,了解如何在 javascript+regex 中验证电子邮件。

于 2013-06-26T14:45:53.003 回答
1

我制定了解决我的问题的方法如下。我也在这里检查电子邮件是否匹配。

// JavaScript Document
//contact form function

 function ValidateInputs(){
 /*check that fields have data*/

 // create array containing textbox elements
 var inputs = [document.getElementById("fname"),_
document.getElementById("lname"), document.getElementById("message"),_
document.getElementById("email1"), document.getElementById("email2")];

    for(var i = 0; i<inputs.length; i++){
 // loop through each element to see if value is empty
        if(inputs[i].value == ""){

            alert("Please complete all fields.");
            return false;
        }
        else if ((email1.value!="") && (ValidateEmail(email1)==false)){

            return false;
        }
        else if ((email2.value!="") && (EmailCheck(email2)==false)){

            return false;
        }
    }
}   


function ValidateEmail(email1){
/*check for valid email format*/
    var reg =/^.+@.+$/;

    if (reg.test(email1.value)==false){

        alert("Please enter a valid email address.");
        return false;

    }
}

function EmailCheck(email2){

    var email1 = document.getElementById("email1");
    var email2 = document.getElementById("email2");

    if ((email2.value)!=(email1.value)){

        alert("Emails addresses do not match.");
        return false;
    }
}

<form onsubmit="return ValidateInputs();" method="post"  id="contactForm">

    <input  type="text"  name="fname" id="fname"  />
    <input  type="text"  name="lname" id="lname" />
    <input   type="text" onblur="return ValidateEmail(this);"  name="email1"  id="email1" />
    <input   type="text" onblur="return EmailCheck(this);" name="email2"  id="email2"/>
    <input type="submit" value="submit" name="submit"  />
</form>
于 2013-06-26T16:15:43.343 回答