0

我有一个要验证的表单,但电子邮件、选择国家/地区字段似乎没有得到验证。有人可以告诉我有什么问题吗?

这是我的javascript:

<script type="text/javascript">
function validateEmail()
{

   var emailID = document.form1.EMail.value;
   atpos = emailID.indexOf("@");
   dotpos = emailID.lastIndexOf(".");
   if (atpos < 1 || ( dotpos - atpos < 2 )) 
   {
       alert("Please enter correct email ID")
       document.form1.EMail.focus() ;
       return false;
   }
   return( true );
}

function validate()
{
//username password First_n Last_n Company Mobile Email Residence



   if( document.form1.First_n.value == "" )
   {
     alert( "Please enter your first name!" );
     document.form1.First_n.focus() ;
     return false;
   }
   if( document.form1.Last_n.value == "" )
   {
     alert( "Please enter your last name!" );
     document.form1.Last_n.focus() ;
     return false;
   }
   if( document.form1.username.value == "" )
   {
     alert( "Please enter your username!" );
     document.form1.username.focus() ;
     return false;
   }

   if( document.form1.password.value == "" )
   {
     alert( "Please enter your password!" );
     document.form1.password.focus() ;
     return false;
   }
   if( document.form1.Company.value == "" )
   {
     alert( "Please provide us your company name!" );
     document.form1.Company.focus() ;
     return false;
   }
   if( document.form1.Mobile.value == "" )
   {
     alert( "Please provide us your mobile number!" );
     document.form1.Mobile.focus() ;
     return false;
   }
   if( document.form1.Email.value == "" )
   {
     alert( "Please provide us your Email!" );
     document.form1.Email.focus() ;
     return false;
   }
   if( document.form1.Email.value != "" )
   {
     // Put extra check for data format
     var ret = validateEmail();
     if( ret == false )
     {
          return false;
     }else 
          return true;
   }
   if( document.form1.Zip.value == "" ||
           isNaN( document.form1.Zip.value ) ||
           document.form1.Zip.value.length != 5 )
   {
     alert( "Please provide a zip in the format #####." );
     document.form1.Zip.focus() ;
     return false;
   }
   if( document.form1.Residence.value == "-1" )
   {
     alert( "Please provide your country!" );
     return false;
   }
   return( true );
}
</script>

我的表单html:

<form name="form1" method="post" action="add_new.php" onsubmit="return(validate());">
<div style="clear:both;padding:0px 10px 0 10px;margin-bottom:20px;">
<h5>Interested in</h5>
<input id="toggle-on" class="toggle toggle-left" name="toggle" value="false" type="radio" checked>
<label for="toggle-on" class="btn">Hosting</label>
<input id="toggle-off" class="toggle toggle-right" name="toggle" value="true" type="radio"
><label for="toggle-off" class="btn">Email accounts</label>
</div> 
<div style="clear-both;">
<input name="First_n" type="text" placeholder="First Name" class="login-text-lbl-pink-no-width" id="First_n">     
<input name="Last_n" type="text" placeholder="Last Name" class="login-text-lbl-pink-no-width" id="Last_n">              
</div>
<input name="username" type="text" placeholder="Username" class="login-text-lbl-pink-no-width" id="username"><br/>
<input name="password" type="password" placeholder="Password" class="login-text-lbl-pink-no-width" id="password"><br/>
<input name="Company" type="text" placeholder="Company" class="login-text-lbl-pink-odd" id="Company">              <br/>
<input name="Mobile" type="text" placeholder="Mobile Phone" id="login-text-lbl" class="pink-transparent-item" id="Mobile">              <br/>
<input name="Email" type="text"  placeholder="Email" class="login-text-lbl-pink-odd" class="pink-transparent-item" id="Email">              <br/>
<select name="Residence" id="Residence" id="login-text-lbl" style="
background-color: rgba(240, 96, 96, 0.62);
border: none;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
height: 30px;
margin: 5px;
font-style: italic;
width: 90%;
padding: 5px;
color: #34584b;
float: none;"
>
<option value="-1" selected>[choose country]</option>
<option value="US">America</option>
<option value="DE">Germany</option>
<option value="IT">Italy</option>
<option value="HK">Hong Kong</option><br/>
<input name="domain" class="pink-transparent-item" type="text"  placeholder="Existing domain" id="login-text-lbl" id="domain">              <br/>

<input type="submit" name="Submit" value="Submit" style='font-family: "Neo Sans Light", Verdana, Tahoma;' class="login-button-pink">
</form>
4

5 回答 5

1

您的表单的电子邮件 ID 为:“Email”,而您的验证码有 EMail (var emailID = document.form1.EMail.value;)?使用正确的控件 ID。

是的,当然你可以使用正则表达式来验证哪个更好。

于 2013-08-08T03:49:32.563 回答
0

仅使用正则表达式进行电子邮件验证可能会容易得多。查看此 StackExchange 答案以获得一个很好的示例。

答案中的代码片段:

function validateEmail(email) { 
    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\
".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA
-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(email);
} 
于 2013-08-08T03:39:13.010 回答
0

做几件事:

1) 在你的“validate()”和“validateEmail()”函数中加入警告语句,确保你收到了所有你期望的值。

2) 如果您使用的是 IE,请尝试在 Chrome 或 FireFox 中加载您的应用程序,并通过内置调试器在您的 JS 函数中设置断点。

于 2013-08-08T03:47:40.087 回答
0

您实际上可以使用 Fuzzley 的答案中的正则表达式方法,对于国家/地区字段部分尝试使用此代码,

var country= document.form1.Residence.value ;
if(country != "America"|| country != "Germany"||country != "Italy"||country != "Hong Kong") {
            alert("Please provide your country!");
            return false;
        }
于 2013-08-08T03:47:58.577 回答
0

这里有一些问题,但让我们尝试具体回答您的问题 -

电子邮件在 chrome 和 firefox 中对我来说很好用,但不能用于 safari、IE、seamonkey 等。

您的validateEmail()方法的输入名为EMail- 您不会得到它。JS 区分大小写。

即使在您进行了验证之后,您也永远不会收到电子邮件以外的任何内容,因为return true您在恢复了validateEmail(). 那时你已经离开validate()了。

至于其他的事情——你真的应该通过 JSLint 运行你的代码来检查它是否有错误。我看到一对未闭合的牙套。我说 JSLint 是因为看起来你是 JS 的相对初学者,所以你可能需要 Crockford 为代码带来的更原教旨主义的方法,至少需要一段时间,直到你擅长它(无意冒犯;我们都从开始)。

于 2013-08-08T03:54:31.917 回答