avaScript 表单验证
JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证。
被 JavaScript 验证的这些典型的表单数据有:
用户是否已填写表单中的必填项目?
用户输入的邮件地址是否合法?
用户是否已输入合法的日期?
用户是否在数据域 (numeric field) 中输入了文本?
必填(或必选)项目
下面的函数用来检查用户是否已填写表单中的必填(或必选)项目。假如必填或必选项为空,那么警告框会弹出,并且函数的返回值为 false,否则函数的返回值则为 true(意味着数据没有问题):
function validate_required(field,alerttxt){
with (field)
{
if (value==null||value=="")
{alert(alerttxt)return false}
else {return true}
}
}
下面是连同 HTML 表单的代码:
<html><head>
<script type="text/javascript">function validate_required(field,alerttxt)
{
with (field)
{
if (value==null||value=="")
{alert(alerttxt)return false}
else {return true}
}
}
function validate_form(thisform)
{
with (thisform)
{
if (validate_required(email,"Email must be filled out!")==false)
{email.focus()return false}
}
}</script>
</head>
<body>
<form action="submitpage.htm" onsubmit="return validate_form(this)" method="post">
Email: <input type="text" name="email" size="30">
<input type="submit" value="Submit">
</form>
</body>
</html>
E-mail 验证
下面的函数检查输入的数据是否符合电子邮件地址的基本语法。
意思就是说,输入的数据必须包含 @ 符号和点号(.)。同时,@ 不可以是邮件地址的首字符,并且 @ 之后需有至少一个点号:
function validate_email(field,alerttxt){
with (field)
{
apos=value.indexOf("@")
dotpos=value.lastIndexOf(".")
if (apos<1||dotpos-apos<2)
{alert(alerttxt)return false}
else {return true}
}
}
下面是连同 HTML 表单的完整代码:
<html><head>
<script type="text/javascript">function validate_email(field,alerttxt)
{
with (field)
{
apos=value.indexOf("@")
dotpos=value.lastIndexOf(".")
if (apos<1||dotpos-apos<2)
{alert(alerttxt)return false}
else {return true}
}
}
function validate_form(thisform)
{
with (thisform)
{
if (validate_email(email,"Not a valid e-mail address!")==false)
{email.focus()return false}
}
}</script>
</head>
<body>
<form action="submitpage.htm"onsubmit="return validate_form(this)" method="post">
Email: <input type="text" name="email" size="30">
<input type="submit" value="Submit">
</form>
</body>
</html>
按照你的要求做了一个示例,样式和图标你需要自己定义,功能已完全实现.顺便试试附件功能, : )
<style>#frm span {
display: none
color: #FF0000
}
</style>
<form action="?" id="frm" onsubmit="javascript:return chkfrm(this)">
姓名:<input type="text" name="name" id="name" onblur="javascript:chkname(this)" /><span></span><br />
QQ号:<input type="text" name="qq" id="qq" onblur="javascript:chkqq(this)" /><span></span><br />
邮箱:<input type="text" name="mail" id="mail" onblur="javascript:chkmail(this)" /><span></span><br />
电话:<input type="text" name="tel" id="tel" onblur="javascript:chktel(this)" /><span></span><br />
留言:<textarea name="text" id="text" onblur="javascript:chktext(this)"></textarea><span></span><br />
<input type="submit" value="提交表单">
</form>
<script type="text/javascript">
var st=false
function chkname(o){
st=/^[\u4e00-\u9fa5]{2,4}$/gi.test(o.value)
o.nextSibling.innerHTML='姓名应为2-4个汉字'
o.nextSibling.style.display=(st?'none':'inline')
}
function chkqq(o){
st=/^\d{5,11}$/gi.test(o.value)
if(!st){
o.nextSibling.innerHTML=(o.value==''?'请输入QQ号':'QQ号应为5-11位数字')
o.nextSibling.style.display='inline'
return
}
else o.nextSibling.style.display='none'
}
// ....
function chkfrm(f){
chkname(f.name)
chkqq(f.qq)
chkmail(f.mail)
chktel(f.tel)
chktext(f.text)
return st
}
</script>
贴出一部分代码,完整示例在附件中.