我們對輸入框經常進行一些重復的資料合法性判斷﹐其實這個完全可以寫成一個模塊化處理﹐而避免反復的重寫﹐以下是我對一些常規檢寫的模塊﹐如要加規則自己可在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="提交">&nbsp;&nbsp;
<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+"');");
}
}

解决方案 »

  1.   

    /**
     * 浏览器脚本函数列表
     * 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;
      }
    }