【问题标题】:Validating form data in Javascript xhtml 1.0 strict, not considering server side scripts for this instance严格验证 Javascript xhtml 1.0 中的表单数据,不考虑此实例的服务器端脚本
【发布时间】:2023-12-30 02:08:01
【问题描述】:

还有其他关于使用 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;
}*/

所以这有助于解决问题。

【问题讨论】:

    标签: javascript function validation email-validation xhtml-1.0-strict


    【解决方案1】:
     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;
     }
    

    【讨论】:

      【解决方案2】:

      我已经看到一个语法错误:

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

      应该是

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

      从我看到的地方。

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

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

      【讨论】:

        【解决方案3】:

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

        查看Regexp recognition of email address hard? 和:Using a regular expression to validate an email address

        【讨论】:

          【解决方案4】:

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

          // 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>
          

          【讨论】:

            最近更新 更多