论坛首页 Web前端技术论坛

用javascript写的表单验证

浏览 2334 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-07-30   最后修改:2009-07-31

用javascript写的表单验证,可以用网站的前后台的登陆,大家可以给提点意见。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>验证表单</title>
<script language="JavaScript">
function check(){
var user = document.getElementById("username").value;
var pass = document.getElementById("pass").value;
var rpass = document.getElementById("rpass").value;
var cardnum = document.getElementById("cardnum").value;
var email = document.getElementById("email").value;

//用户名只能由字母、数字、下划线组成,其它字符一律过滤,这样也确保了安全性,
//正则表达式的意思是,当输入0-9、a-z、A-Z、_以外的任何一个或者多个字符时则提示错误
if (user.match("([^a-zA-Z0-9_]+)") != null || user.length < 3 || user.length > 15) {
alert("您输入的用户名应由字母数字下划线组成,长度在3~15位之间!");
return false;
}
else 
if ((pass.length > 20 || pass.length < 6) || (pass == user)) {
alert("您的密码长度过短或者密码与姓名相同,请重新输入!");
return false;
}
else 
if (pass != rpass) {
alert("您两次输入的密码不一致!");
return false;
}
else 
//身份证号用于匹配两种模式,一种是15位的,一种是18位的
//这个正则表达式分三部分:第一位必须为1,最后一位可以是x、X、0-9中的任意一位
//中间一块是指匹配13或者16位数字
if (cardnum.match("1\\d{16}[0-9xX]+|1\\d{13}[0-9xX]+") == null) {
alert("您的身份证号码不正确,请重新输入!");
return false;
}
else 
//正则表达式匹配a-zA-Z0-9_中的一位或者多位,而且必须要有@.这是一个email必须的
if (email.match("[a-zA-Z0-9_]*@.") == null) {
alert("您输入的E-Mail不正确,请重新输入!");
return false;
}
else {
alert("登陆成功!");
}
}
</script>
</head>
<body>
<form action="ff.html" method="get" onsubmit="return check();">
用户名:<input id="username" type="text" name="username"/><p/>密 码: <input id="pass" type="password" name="password"/><p/>重新输入密码:<input id="rpass" type="password"/><p/>身份证号码:<input id="cardnum" type="text"/><p/>E-Mail:<input id="email" type="text"/>
<br/>
<br/>
<input type="submit" value="提交" /><input type="reset" value="重置"/>
</form>
</body>
</html>

 

论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics