我們對輸入框經常進行一些重復的資料合法性判斷﹐其實這個完全可以寫成一個模塊化處理﹐而避免反復的重寫﹐以下是我對一些常規檢寫的模塊﹐如要加規則自己可在chkdata.js文件擴充﹐以下是示例﹕demo.htm=================<script language="javascript" src="chkdata.js"></script>
<FORM METHOD=POST ACTION="" name="form1">
登陸帳號<input type="text" name="user_no" size="20">*<br>
昵稱<input type="text" name="user_name" size="20">*<br>
密碼<input type="password" name="user_psw" size="20">*<br>
密碼確認<input type="password" name="chk_psw" size="20">*<br>
QQ<input type="text" name="user_qq" size="12"><br>
MSN<input type="text" name="user_MSN" size="60"><br>
E_mail<input type="text" name="user_mail" size="60"><br>
個性化簽名<input type="text" name="user_qm" size="60"><br>
<input type="submit" value="提交">
<input type="reset" value="重寫">
</form><script language="javascript">
//注意﹕以下加規則的代碼必須出現在form后面
var obj=new chkForm("form1") //加入你要判斷的FORM的name
obj.isPass("user_no","isZero","請輸入登陸帳號"); //加入一個你要判斷的控件名﹐參數1﹕控件名﹐2﹕檢驗規則﹐3﹕錯誤提示(可省略)
obj.isPass("user_no","isNoChinese");
obj.isPass("user_name","isZero","請輸入昵稱");
obj.isPass("user_psw","isZero","請輸入登陸密碼");
obj.isPass("user_psw","isSame","chk_psw");
obj.isPass("user_MSN","isEmail","請輸入標准格式e_mail﹐請改正");
obj.isPass("user_mail","isEmail","請輸入標准格式e_mail﹐請改正");
obj.isPass("user_qq","isNumeric");
</script>
chkdata.js==========//功能﹕數據規則合法性檢測
//完成﹕2002/11/28
//作者﹕LiuZX
//備注﹕IE5環境下測試通過function String.prototype.trim(){return this.replace(/(^\s*)|(\s*$)/g, "");}function isDate(s,msg){
if (s.value.length==0)return true;
if (!msg)msg='不存在該日期﹐請改正';
var str=s.value
var reg = /^(\d{4})(-|\/)(0?[1-9]|1[0-2])(-|\/)(0?[1-9]|[12][0-9]|3[01])$/g;
var r = reg.exec(str);
if(r==null){alert(msg);s.select();return false;}
var d = new Date(r[1], r[3]-1,r[5]);
var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate()
var reg=/(\/|-)(0*)([1-9])/g
var t=s.value.replace(reg,'$1$3')
if (newStr==t){return true;}
s.select()
alert(msg);
return false;
}function isEmail(s,msg){
if (s.value.length==0)return true;
var reg = /^([a-z]){1,}([\.a-z0-9_\-]){1,}([a-z0-9]){1,}@([a-z0-9_-]){3,}(\.([a-z0-9]){2,4}){1,2}$/gi;
if (reg.test(s.value))return true;
else {
if (msg)alert(msg)
else alert('請輸入標准格式E_mail')
s.select()
return false;
}
}function isEnglish(s,msg){
var reg=/^[a-z]*$/gi
if(reg.test(s.value))return true
else {
if (msg)alert(msg)
else alert('該欄只能輸入英文﹐請改正');
s.select();
return false;
}
}function isChinese(s,msg){
var reg = /[^\u4E00-\u9FA5]/g;
if (reg.test(s.value)){
s.select()
alert((msg?msg:'該欄只能輸入中文﹐請改正'));
return false;
}
return true;
}function isNoChinese(s,msg){
var reg = /[\u4E00-\u9FA5]|[\uFE30-\uFFA0]/gi;
if (reg.test(s.value)){s.select()
alert((msg?msg:'該欄不能輸入中文及全角符號﹐請改正'));
return false;
}
return true;
}function isZero(s,msg){
var str=s.value.trim();
if (str.length!=0)return true
else {
alert((msg?msg:'該欄不能為空﹐請改正'));
s.select();
return false;
}
}function isNumeric(s,msg){
if (s.value*1!=s.value){
if (msg)alert(msg)
else alert('該欄為只能輸入數字﹐請改正')
s.select()
return false
}
return true
}function isEN(s,msg){
var reg=/^[a-z0-9.]*$/gi
if(reg.test(s.value))return true
else {
if (msg)alert(msg)
else alert('該欄只能輸入英文和數字﹐請改正');
s.select();
return false;
}
}function isSame(s1,s2){
var f=s1.form
if (s1.value!=eval('f.'+s2+'.value')){
alert('登陸密碼和確認密碼不一致﹐請改正');
s1.select();
return false
}
return true
}function chkForm(frmName){
this.frmName=frmName;
this.chkFunBody = "";
this.isPass = function(eleName,chkFun,strMsg){
this.chkFunBody += chkFun+"("+this.frmName+"."+eleName
if(strMsg)this.chkFunBody +=",\""+strMsg+"\""
this.chkFunBody +=") && "
var tmp = "return( "+ this.chkFunBody +" true)"
eval(this.frmName+".onsubmit=Function('"+tmp+"');");
}
}
<FORM METHOD=POST ACTION="" name="form1">
登陸帳號<input type="text" name="user_no" size="20">*<br>
昵稱<input type="text" name="user_name" size="20">*<br>
密碼<input type="password" name="user_psw" size="20">*<br>
密碼確認<input type="password" name="chk_psw" size="20">*<br>
QQ<input type="text" name="user_qq" size="12"><br>
MSN<input type="text" name="user_MSN" size="60"><br>
E_mail<input type="text" name="user_mail" size="60"><br>
個性化簽名<input type="text" name="user_qm" size="60"><br>
<input type="submit" value="提交">
<input type="reset" value="重寫">
</form><script language="javascript">
//注意﹕以下加規則的代碼必須出現在form后面
var obj=new chkForm("form1") //加入你要判斷的FORM的name
obj.isPass("user_no","isZero","請輸入登陸帳號"); //加入一個你要判斷的控件名﹐參數1﹕控件名﹐2﹕檢驗規則﹐3﹕錯誤提示(可省略)
obj.isPass("user_no","isNoChinese");
obj.isPass("user_name","isZero","請輸入昵稱");
obj.isPass("user_psw","isZero","請輸入登陸密碼");
obj.isPass("user_psw","isSame","chk_psw");
obj.isPass("user_MSN","isEmail","請輸入標准格式e_mail﹐請改正");
obj.isPass("user_mail","isEmail","請輸入標准格式e_mail﹐請改正");
obj.isPass("user_qq","isNumeric");
</script>
chkdata.js==========//功能﹕數據規則合法性檢測
//完成﹕2002/11/28
//作者﹕LiuZX
//備注﹕IE5環境下測試通過function String.prototype.trim(){return this.replace(/(^\s*)|(\s*$)/g, "");}function isDate(s,msg){
if (s.value.length==0)return true;
if (!msg)msg='不存在該日期﹐請改正';
var str=s.value
var reg = /^(\d{4})(-|\/)(0?[1-9]|1[0-2])(-|\/)(0?[1-9]|[12][0-9]|3[01])$/g;
var r = reg.exec(str);
if(r==null){alert(msg);s.select();return false;}
var d = new Date(r[1], r[3]-1,r[5]);
var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate()
var reg=/(\/|-)(0*)([1-9])/g
var t=s.value.replace(reg,'$1$3')
if (newStr==t){return true;}
s.select()
alert(msg);
return false;
}function isEmail(s,msg){
if (s.value.length==0)return true;
var reg = /^([a-z]){1,}([\.a-z0-9_\-]){1,}([a-z0-9]){1,}@([a-z0-9_-]){3,}(\.([a-z0-9]){2,4}){1,2}$/gi;
if (reg.test(s.value))return true;
else {
if (msg)alert(msg)
else alert('請輸入標准格式E_mail')
s.select()
return false;
}
}function isEnglish(s,msg){
var reg=/^[a-z]*$/gi
if(reg.test(s.value))return true
else {
if (msg)alert(msg)
else alert('該欄只能輸入英文﹐請改正');
s.select();
return false;
}
}function isChinese(s,msg){
var reg = /[^\u4E00-\u9FA5]/g;
if (reg.test(s.value)){
s.select()
alert((msg?msg:'該欄只能輸入中文﹐請改正'));
return false;
}
return true;
}function isNoChinese(s,msg){
var reg = /[\u4E00-\u9FA5]|[\uFE30-\uFFA0]/gi;
if (reg.test(s.value)){s.select()
alert((msg?msg:'該欄不能輸入中文及全角符號﹐請改正'));
return false;
}
return true;
}function isZero(s,msg){
var str=s.value.trim();
if (str.length!=0)return true
else {
alert((msg?msg:'該欄不能為空﹐請改正'));
s.select();
return false;
}
}function isNumeric(s,msg){
if (s.value*1!=s.value){
if (msg)alert(msg)
else alert('該欄為只能輸入數字﹐請改正')
s.select()
return false
}
return true
}function isEN(s,msg){
var reg=/^[a-z0-9.]*$/gi
if(reg.test(s.value))return true
else {
if (msg)alert(msg)
else alert('該欄只能輸入英文和數字﹐請改正');
s.select();
return false;
}
}function isSame(s1,s2){
var f=s1.form
if (s1.value!=eval('f.'+s2+'.value')){
alert('登陸密碼和確認密碼不一致﹐請改正');
s1.select();
return false
}
return true
}function chkForm(frmName){
this.frmName=frmName;
this.chkFunBody = "";
this.isPass = function(eleName,chkFun,strMsg){
this.chkFunBody += chkFun+"("+this.frmName+"."+eleName
if(strMsg)this.chkFunBody +=",\""+strMsg+"\""
this.chkFunBody +=") && "
var tmp = "return( "+ this.chkFunBody +" true)"
eval(this.frmName+".onsubmit=Function('"+tmp+"');");
}
}
* 浏览器脚本函数列表
* boolean isNumber(numStr) :判断字符串是否是数值格式
* boolean isValidString(szStr) :判断字符串中是否含有非法字符"'\"><"
* boolean isBlank(szStr) :判断字符串是否为空字符串(或不包含除空格外的其他字符)
* String trim(szStr) :去掉字符串两端的空格
* boolean isDateStr(ds) :判断字符串是否为合法的日期格式:YYYY-MM-DD HH:MM:SS
* 或 YYYY-MM-DD 或 HH:MM:SS
* boolean isDatePart(dateStr) :判断字符串是否为合法的日期格式:YYYY-MM-DD
* boolean isTimePart(dateStr) :判断字符串是否为合法的时间格式:HH:MM:SS
* boolean chk_email(emailAddress) :判断邮件地址格式是否合法
*//***********************************************************************
* 判断一个字符串是否是数值格式
*/
function isNumber(numStr){
return !isNaN(numStr);
}/***********************************************************************
* 判断一个字符串中是否含有下列非法字符
*/
voidChar = "'\"><";function isValidString(szStr){
for(i = 0 ; i < voidChar.length; i ++){
aChar = voidChar.substring(i, i + 1);
if(szStr.indexOf(aChar) > -1){
return false;
}
}
return true;
}/***********************************************************************
* 判断一个字符串是否为空字符串
*/
function isBlank(szStr){
if(szStr.length < 1){
return true;
} for(i = 0; i < szStr.length; i ++){
if(szStr.substring(i, i + 1) != ' '){
return false;
}
}
return true;
}/***********************************************************************
* 去掉一个字符串两端的空格
*/
function trim(szStr){
//去掉字符串头部的空格
while(szStr.length > 0){
if( szStr.substring(0, 1) != ' '){
break;
}else{
szStr = szStr.substring(1);
}
} //去掉字符串尾部的空格
while(szStr.length > 0){
if( szStr.substring(szStr.length - 1, szStr.length) != ' '){
break;
}else{
szStr = szStr.substring(0,szStr.length - 1);
}
}
return szStr;
}/***********************************************************************
* 判断一个字符串是否为合法的日期格式:YYYY-MM-DD HH:MM:SS
* 或 YYYY-MM-DD 或 HH:MM:SS
*/
function isDateStr(ds){
parts = ds.split(' ');
switch(parts.length){
case 2:
if(isDatePart( parts[0] ) == true && isTimePart( parts[1] )){
return true;
}else{
return false;
}
case 1:
aPart = parts[0];
if(aPart.indexOf(':') > 0 ){
return isTimePart(aPart);
}else{
return isDatePart(aPart);
}
default:
return false;
}
}/***********************************************************************
* 判断一个字符串是否为合法的日期格式:YYYY-MM-DD
*/
function isDatePart(dateStr){
var parts; if(dateStr.indexOf("-") > -1){
parts = dateStr.split('-');
}else if(dateStr.indexOf("/") > -1){
parts = dateStr.split('/');
}else{
return false;
} if(parts.length < 3){
//日期部分不允许缺少年、月、日中的任何一项
return false;
} for(i = 0 ;i < 3; i ++){
//如果构成日期的某个部分不是数字,则返回false
if(isNaN(parts[i])){
return false;
}
} y = parts[0];//年
m = parts[1];//月
d = parts[2];//日 if(y > 3000){
return false;
} if(m < 1 || m > 12){
return false;
} switch(d){
case 29:
if(m == 2){
//如果是2月份
if( (y / 100) * 100 == y && (y / 400) * 400 != y){
//如果年份能被100整除但不能被400整除 (即闰年)
}else{
return false;
}
}
break;
case 30:
if(m == 2){
//2月没有30日
return false;
}
break;
case 31:
if(m == 2 || m == 4 || m == 6 || m == 9 || m == 11){
//2、4、6、9、11月没有31日
return false;
}
break;
default: } return true;
}/***********************************************************************
* 判断一个字符串是否为合法的时间格式:HH:MM:SS
*/
function isTimePart(timeStr){
var parts; parts = timeStr.split(':'); if(parts.length < 2){
//日期部分不允许缺少小时、分钟中的任何一项
return false;
} for(i = 0 ;i < parts.length; i ++){
//如果构成时间的某个部分不是数字,则返回false
if(isNaN(parts[i])){
return false;
}
} h = parts[0];//年
m = parts[1];//月 if( h < 0 || h > 23){
//限制小时的范围
return false;
}
if( m < 0 || h > 59){
//限制分钟的范围
return false;
} if(parts.length > 2){
s = parts[2];//日 if( s < 0 || s > 59){
//限制秒的范围
return false;
}
} return true;
}function chk_email(email){
invalid = ""; if (!email){}
//invalid = "请输入您的Email地址。"; else { if ( (email.indexOf("@") == -1) || (email.indexOf(".") == -1) )
invalid += "\n\nEmail地址不合法。应当包含'@'和'.';例如('.com')。请检查后再递交。"; if (email.indexOf("your email here") > -1)
invalid += "\n\nEmail地址不合法,请检测您的Email地址,在域名内应当包含'@'和'.';例如('.com')。"; if (email.indexOf("\\") > -1)
invalid += "\n\nEmail地址不合法,含有非法字符(\\)。"; if (email.indexOf("/") > -1)
invalid += "\n\nEmail地址不合法,含有非法字符(/)。"; if (email.indexOf("'") > -1)
invalid += "\n\nEmail地址不合法,含有非法字符(')。"; if (email.indexOf("!") > -1)
invalid += "\n\nEmail地址不合法,含有非法字符(!)。"; if ( (email.indexOf(",") > -1) || (email.indexOf(";") > -1) )
invalid += "\n\n只输入一个Email地址,不要含有分号和逗号。"; if (email.indexOf("?subject") > -1)
invalid += "\n\n不要加入'?subject=...'。"; } if (invalid == ""){
return true;
}else{
alert("输入的Email可能包含错误:" + invalid);
return false;
}
}