我需要做一个javascript表单验证。 我希望在用户点击或标记到下一个字段时验证每个字段。 (onBlur?) 我必须验证电子邮件的正确格式。与地址和电话一样。 我不确定将验证代码放在HTML表单中的哪个位置。 在发送到服务器之前,需要在浏览器上进行验证。 我很感激任何建议或教程。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Request Form</title>
<meta name="Description" content="This webpage is for Customer Demographics" />
<meta name="Keywords" content="Rhonda , email, " />
<meta name="author" content="Rhonda " />
<meta name="copyright" content="Copyright 2010 Rhonda , All Rights
Reserved" />
<meta name="robots" content="all" />
<meta name="revisit-after" content="15 days" />
<meta name="rating" content="safe for kids" />
<script type="text/javascript" >
</script>
</head>
<body>
<body style="background-color:lightsteelblue">
<h1>
Welcome Kudler Fine Foods customer.
<br />
<br />
<br />
Please enter the following details in order
to be added to our preferred customer mailing list:
<br />
<br />
<br />
</h1>
<form action="">
<fieldset>
<legend>Personal information:</legend>
<p>
First Name:
<br />
<input type="text" name="txtFName" VALUE="" SIZE="30" MAXLENGTH="50" />
</p>
<p>
Middle Initial:
<br />
<input type="text" name="txtMiddle" VALUE="" SIZE="5" MAXLENGTH="3" />
</p>
<p>
Last Name:
<br />
<input type="text" name="txtLName" VALUE="" SIZE="30" MAXLENGTH="50" />
<br />
<br />
</fieldset>
</form>
</p>
<form action="">
<fieldset>
<legend>Address:</legend>
<p>
Mailing Address:
<br />
<br />
Street <INPUT TYPE="TEXT" NAME="Street" VALUE="" SIZE="25"
MAXLENGTH="50" />
<br />
City <INPUT TYPE="TEXT" NAME="City" VALUE="" SIZE="35" MAXLENGTH="50"
/><br />
State <INPUT TYPE="TEXT" NAME="State" VALUE="" SIZE="2" MAXLENGTH="2"
/> <br />
Zip Code <INPUT TYPE="TEXT" NAME="State" VALUE="" SIZE="5"
MAXLENGTH="5" /> <br />
<br />
<br />
</fieldset>
</form>
</p>
<p>
Email Address:
<br />
<INPUT TYPE="TEXT" NAME="Email" VALUE="" SIZE="25" MAXLENGTH="50" />
</p>
<p>
Telephone Number:
<br />
<input type="TEXT" NAME="AreaCode" VALUE="" SIZE="3" MAXLENGTH="3"/>
<INPUT TYPE="TEXT" NAME="Telephone" VALUE="" SIZE="7" MAXLENGTH="7" />
<br />
</p>
<!--NOTES
This part was not mandantory. I was just trying some of the extra ways of adding input that the book discussed-->
<p>
Gender:
<br />
<input type="radio" name="sex" value="male" /> Male<br />
<input type="radio" name="sex" value="female" /> Female
</p>
<p>
How did you hear about us?
<br />
<input type="checkbox" name="Friend" value="Friend" /> From a friend
<br />
<input type="checkbox" name="Advertisement" value="Advertisement" />
Store Advertisement
<br />
<input type="checkbox" name="Online" value="Online" /> From Online
<br />
<input type="checkbox" name="Other" value="Other" /> Other
<br />
</p>
<p>
How do you wish to be contacted?
<br />
<form action="">
<select name="contact">
<option value="telephone">Telephone</option>
<option value="E-mail">E-mail</option>
<option value="Snail-mail">Snail-mail</option>
</select>
</form>
</p>
<p>
<form>
<form name="input"
<form action="acknowledgement.html">
<INPUT TYPE="SUBMIT" NAME="submit" VALUE="Submit and Verify">
</form>
</p>
<form>
<p>
<input type="reset" Name="resetbutton" Value="Reset Form Now">
</p>
</form>
<p><a href="#top">Back to Top</a></p>
</body>
</html>
Code for Acknowledgement Page:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Acknowledgement Page</title>
<meta name="Description" content="This webpage is for Customer Demographics" />
<meta name="Keywords" content=" email, " />
<meta name="author" content="Rhonda " />
<meta name="copyright" content="Copyright 2010 Rhonda, All Rights Reserved" />
<meta name="robots" content="all" />
<meta name="revisit-after" content="15 days" />
<meta name="rating" content="safe for kids" />
</head>
<body>
<body style="background-color:lightsteelblue">
<script type="text/javascript"></script>
<h1>Request Confirmation</h1>
<p>Your request has been received.</p>
<p>Thank you. You will be added to our customer mailing list</p>"
<p>Please use your browsers back button or, </p>"
<address>
<a href="index.htm">Click here</a>
</address>
</body>
</html>
答案 0 :(得分:0)
是的,onBlur
会起作用,但这有点令人讨厌。通常,验证是在用户尝试提交表单时完成的。
<script type="text/javascript>
function ValidateEmail( id )
{
var at = '@';
var dot = '.';
var lat = id.value.indexOf(at);
var lstr = id.value.length;
var ldot = id.value.indexOf(dot);
if ( (id.value == null) || (id.value == "") ) return false;
if ( id.value.indexOf(at) == -1 ) return false;
if ( (id.value.indexOf(at) == -1) || (id.value.indexOf(at) == 0) || (id.value.indexOf(at) == lstr) ) return false;
if ( (id.value.indexOf(dot) == -1) || (id.value.indexOf(dot) == 0) || (id.value.indexOf(dot) == lstr) ) return false;
if ( id.value.indexOf(at,(lat+1)) != -1 ) return false;
if ( (id.value.substring(lat-1,lat) == dot) || (id.value.substring(lat+1,lat+2) == dot) ) return false;
if ( id.value.indexOf(dot,(lat+2)) == -1 ) return false;
if ( id.value.indexOf(' ') != -1 ) return false;
if ( lstr > 320 ) return false;
if ( lat > 64 ) return false;
if ( (lstr - lat) > 255 ) return false;
return true;
}
function ValidateForm()
{
var nameID = document.myform.name;
var emailID = document.myForm.email;
if ( (nameID.value == null) || (nameID.value == "") )
{
alert( "Please fill in your name." );
nameID.focus();
nameID.select();
return false;
}
return ValidateEmail( emailID );
}
</script>
<form name="myForm" onSubmit="return ValidateForm()" action="#">
<input type="text" name="name"></input>
<input type="text" name="email"></input>
</form>
答案 1 :(得分:0)
最简单的解决方案是将您的事件包含在元素标记中。这种方法已经失去了大多数Web开发人员的青睐,但是如果你不能使用像jQuery或原型这样的东西,并且作业是作业,那么下面应该没问题。
请注意,严格使用onblur方法可以阻止您检查必填字段是否留空,因此您通常还希望在单击提交按钮时验证整个表单。
<script type="text/javascript">
function validateMiddleName() {
// get element, do some validation
if(!valid) {
alert("invalid middle name");
}
}
function validateForm() {
validateFirstName();
validateMiddleName();
validateLastName();
//etc...
}
</script>
<form onsubmit="validateForm()">
<input type="text" name="txtMiddle" VALUE="" SIZE="5" MAXLENGTH="3" onBlur="validateMiddleName()"/>
</form>