js验证表单

JavaScript017

js验证表单,第1张

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>

贴出一部分代码,完整示例在附件中.