1. 可以用js实现 假设用户名框叫text1, form1.text1.focus()2. 把正确和错误的放在两个session数组里, 聚焦同上3. 用正则 参考 /^([\x00-\x7F]|[\x80-\xFE][\x40-\x7E\x80-\xFE]){30}/ 或 /[^\x00-\x80]/4. 应该需要有身份证号码的数据库 这里有个ASP.NET的程序 你参考下 http://www.codepub.com/software/view-software-11451.html
<SCRIPT language=JavaScript type="text/javascript">
function checkform()
{
//check the user input value
if(document.getElementById("uname").value=="")
{
alert("请输入用户名!");
document.getElementById("uname").focus();
return false;
}
var uuname=/^(\w){6,20}$/;
if (!uuname.test(document.getElementById("uname").value))
{
alert("用户名只能由6-20个字母、数字、下划线组成!");
document.getElementById("uname").focus();
document.getElementById("uname").select();
return false;
}
if(document.getElementById("upass").value=="")
{
alert("请输入您的密码!");
document.getElementById("upass").focus();
return false;
}
var uupass=/^(\w){8,20}$/;
if (!uupass.test(document.getElementById("upass").value))
{
alert("密码只能由8-20个字母、数字、下划线组成!");
document.getElementById("upass").focus();
document.getElementById("upass").select();
return false;
}
}
</SCRIPT><form action="chklogin.php" method="post" name="form1" id="form1" style="margin:0px;" onsubmit="return checkform();">3.同第二个问题一样,参考代码如上。4.验证身份证的JS正则参考如下: var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}
var str=document.form2.sfz.value
document.form2.sfz.value=document.form2.sfz.value.replace(/x+$/,"a");
if(aCity[parseInt(str.substr(0,2))]==null)
{
alert("身份证的地区不对!");
document.form2.sfz.focus();
return false;
}
sBirthday=str.substr(6,4)+"-"+Number(str.substr(10,2))+"-"+Number(str.substr(12,2));
var d=new Date(sBirthday.replace(/-/g,"/"))
if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))
{
alert("注册失败!原因:身份证的日期与你生日不吻合!");
document.form2.sfz.focus();
return false;
}
//var iSum=0
//var info=""
//for(var i = 17;i>=0;i --) iSum += (Math.pow(2,i) % 11) * parseInt(str.charAt(17 - i),11)
//if(iSum%11!=1)
//{
//alert("注册失败!原因:身份证号不合格");
// document.form2.sfz.focus();
//return false;
//}
<script language="javascript">
function SetFocus()
{
if (document.form1.userName.value=="")
document.form1.userName.focus();
else
document.form1.userName.select();
}
</script>
<form id="form1" name="form1" method="post" action="">
<input name="userName" type="text" id="userName" size="15" />
</form>
<script language="javascript">
SetFocus()
</script>2,3
<SCRIPT language=JavaScript type="text/javascript">
function checkform()
{
//check the user input value
if(document.getElementById("uname").value=="")
{
alert("请输入用户名!");
document.getElementById("uname").focus();
return false;
}
var uuname=/^(\w){6,20}$/;
if (!uuname.test(document.getElementById("uname").value))
{
alert("用户名只能由6-20个字母、数字、下划线组成!");
document.getElementById("uname").focus();
document.getElementById("uname").select();
return false;
}
if(document.getElementById("upass").value=="")
{
alert("请输入您的密码!");
document.getElementById("upass").focus();
return false;
}
var uupass=/^(\w){8,20}$/;
if (!uupass.test(document.getElementById("upass").value))
{
alert("密码只能由8-20个字母、数字、下划线组成!");
document.getElementById("upass").focus();
document.getElementById("upass").select();
return false;
}
}
</SCRIPT><form action="chklogin.php" method="post" name="form1" id="form1" style="margin:0px;" onsubmit="return checkform();">4,
http://hi.baidu.com/moonelf9989/blog/item/2cf32d3617492bdba2cc2b83.html
if(chechdata($month,$day,$year)==false){
echo "<script>alert('您输入的日期不合法');history.back();</script>";
}其中的history.back();就可以让输入的合法的数据存在,不合法的消失。
而我以前用的是:
if(chechdata($month,$day,$year)==false){
echo "<script>alert('您输入的日期不合法');</script>";
echo '<meta http-equiv="refresh" content="0; url=“XXX">';
}
这其中的refresh一下子把原先的内容给刷没了。
则原信息应仍能保留,否则为新