js验证表单

JavaScript09

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>

1. 长度限制

<script>

function test()

...{

if(document.a.b.value.length>50)

...{

alert("不能超过50个字符!")

document.a.b.focus()

return false

}

}

</script>

<form name=a onsubmit="return test()">

<textarea name="b" cols="40" wrap="VIRTUAL" rows="6"></textarea>

<input type="submit" name="Submit" value="check">

</form>

2. 只能是汉字

<input onkeyup="value="/oblog/value.replace(/[^u4E00-u9FA5]/g,'')">

3." 只能是英文

<script language=javascript>

function onlyEng()

...{

if(!(event.keyCode>=65&&event.keyCode<=90))

event.returnvalue=false

}

</script>

<input onkeydown="onlyEng()">

4. 只能是数字

<script language=javascript>

function onlyNum()

...{

if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)))

//考虑小键盘上的数字键

event.returnvalue=false

}

</script>

<input onkeydown="onlyNum()">

5. 只能是英文字符和数字

<input onkeyup="value="/oblog/value.replace(/[W]/g,"'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))">

6. 验证邮箱格式

<SCRIPT LANGUAGE=javascript RUNAT=Server>

function isEmail(strEmail) ...{

if (strEmail.search(/^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$/) != -1)

return true

else

alert("oh")

}

</SCRIPT>

<input type=text onblur=isEmail(this.value)>

7. 屏蔽关键字(这里屏蔽***和****)

<script language="javascript1.2">

function test() ...{

if((a.b.value.indexOf ("***") == 0)||(a.b.value.indexOf ("****") == 0))...{

alert(":)")

a.b.focus()

return false}

}

</script>

<form name=a onsubmit="return test()">

<input type=text name=b>

<input type="submit" name="Submit" value="check">

</form>

8. 两次输入密码是否相同

<FORM METHOD=POST ACTION="">

<input type="password" id="input1">

<input type="password" id="input2">

<input type="button" value="test" onclick="check()">

</FORM>

<script>

function check()

...{

with(document.all)...{

if(input1.value!=input2.value)

...{

alert("false")

input1.value = ""

input2.value = ""

}

else document.forms[0].submit()

}

9.身份证的验证

function isIdCardNo(num)

{

if (isNaN(num)) {alert("输入的不是数字!")return false}

var len = num.length, re

if (len == 15)

re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/)

else if (len == 18)

re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)$/)

else {alert("输入的数字位数不对!")return false}

var a = num.match(re)

if (a != null)

{

if (len==15)

{

var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5])

var B = D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5]

}

else

{

var D = new Date(a[3]+"/"+a[4]+"/"+a[5])

var B = D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5]

}

if (!B) {alert("输入的身份证号 "+ a[0] +" 里出生日期不对!")return false}

}

return true

}

}

jquery.validate.js表单验证

官方网站: http://bassistance.de/jquery-plugins/jquery-plugin-validation/

API: http://jquery.bassistance.de/api-browser/plugins.html

当前版本:1.5.5

需要JQuery版本:1.2.6+, 兼容 1.3.2

<script src="../js/jquery.js" type="text/javascript"></script>

<script src="../js/jquery.validate.js" type="text/javascript"></script>

(1)required:true 必输字段

(2)remote:"check.php" 使用ajax方法调用check.php验证输入值

(3)email:true 必须输入正确格式的电子邮件

(4)url:true必须输入正确格式的网址

(5)date:true 必须输入正确格式的日期

(6)dateISO:true必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22 只验证格式,不验证有效性

(7)number:true 必须输入合法的数字(负数,小数)

(8)digits:true 必须输入整数

(9)creditcard: 必须输入合法的信用卡号

(10)equalTo:"#field" 输入值必须和#field相同

(11)accept:输入拥有合法后缀名的字符串(上传文件的后缀)

(12)maxlength:5输入长度最多是5的字符串(汉字算一个字符)

(13)minlength:10 输入长度最小是10的字符串(汉字算一个字符)

(14)rangelength:[5,10] 输入长度必须介于 5 和 10 之间的字符串")(汉字算一个字符)

(15)range:[5,10] 输入值必须介于 5 和 10 之间

(16)max:5 输入值不能大于5

(17)min:10 输入值不能小于10

例子:自定义密码验证的规则