jsp頁面數據驗證

 /**使用方法:
*第1步:拷貝下面的代碼到需要校驗的頁面:
*<script src="../js/DataValidate.js" language="javascript"></script>
*第2步:
*1)對要校驗的控件添加需要的校驗屬性,如:<input type="text" allownull="false" maxlength="13" dtype="tel" des="電話號碼">
* 其中allownull,maxlength,dtype,compare,des爲需要自己添加的校驗屬性。
*  allownull取值:true—Input允許爲空;false—不允許爲空
* maxlength取值:表示Input允許輸入的最大長度;
* dtype代表Input只能輸入的數據格式,取值:
*       number-數字格式,
*  date-日期格式,
*  datetime-時間格式,
*  tel-電話號碼格式,
*  email-電子郵件格式,
*  float-小數
*  xq-刑期
*       age-年齡格式
*       year-日期年份格式
*   integerdigits當dtype=float時使用,表示整數位數,默認爲13
* decimaldigits當dtype=float時使用,表示小數位數,默認爲2
*   compare當dtype=date時使用,取值:+curdate-大於等於當前日期;-curdate-小於等於當前日期
* sysdate當compare不爲空時使用,其值爲web服務器的當前時間(可用Tools.getDateString()方法獲得),格式爲yyyy-mm-dd
*       如:<input type="text" allownull="false" dtype="date" compare="-curdate" sysdate="2006-02-16" des="受理日期">
*第3步:設置提交按鈕onClick="checkFormData();"。
*/

/**
* 是否是日期的檢查(日期格式爲"yyyy-mm-dd")
* 格式:年必須輸入四位數且必須在1900年以後;月日時分秒要麼輸入兩個數字,要麼輸入一個數字;
* @param dateStr 被檢查的字符串
* @return true(是日期格式"yyyy-mm-dd"); false(不是日期格式"yyyy-mm-dd")
*/
function isDate(dateStr) {
   var re = /^/d{4}-/d{1,2}-/d{1,2}$/;
   var r = dateStr.match(re);
   if (r == null) {
      return false;
   }
   else {
      var s = dateStr.split("-");
      if (s[0].substring(0,2) < 19 || s[1] > 12 || s[1] < 1 || s[2] > 31 || s[2] < 1) {
         return false;
      }
      if ((s[1] == 4 || s[1] == 6 || s[1] == 9 || s[1] == 11) && s[2] == 31) {//月小
         return false;
      }

      if (((s[0] % 4 == 0) && (s[0] % 100 != 0)) || (s[0] % 400 == 0)) { //是閏年
          if (s[1] == 2 &&  s[2] > 29) {
            return false;
         }
      }
      else {//不是閏年
          if (s[1] == 2 &&  s[2]>28) {
            return false;
         }
      }
   }
   return true;
}
/**
* 是否是日期的檢查(日期格式爲"yyyy-mm-dd hh:mm:ss")
* 格式:年必須輸入四位數且必須在1900年以後;月日時分秒要麼輸入兩個數字,要麼輸入一個數字;
* @param dateStr 被檢查的字符串
* @return true(是日期格式"yyyy-mm-dd hh:mm:ss"); false(不是日期格式"yyyy-mm-dd hh:mm:ss")
*/
function isDateTime(dateStr) {
   dateStr = combChar(dateStr, " ");
   var re = /^(/d{4})/-(/d{1,2})/-(/d{1,2}) (/d{1,2}):(/d{1,2}):(/d{1,2})$/;
   var r = dateStr.match(re);
   if (r == null) {
      return false;
   }
   else {
      var str = dateStr.split(" ");
      var s = str[0].split("-");
      var strTime = str[1].split(":");
      if (s[0].substring(0,2) < 19 || s[1] > 12 || s[1] < 1 || s[2] > 31 || s[2] < 1) {
         return false;
      }
      if ((s[1] == 4 || s[1] == 6 || s[1] == 9 || s[1] == 11) && s[2] == 31) {//月小
         return false;
      }

      if (((s[0] % 4 == 0) && (s[0] % 100 != 0)) || (s[0] % 400 == 0)) { //是閏年
          if (s[1] == 2 &&  s[2] > 29) {
            return false;
         }
      }
      else {//不是閏年
          if (s[1] == 2 &&  s[2]>28) {
            return false;
         }
      }
      if (strTime[0] > 23 || strTime[1] > 59 || strTime[2] > 59 ) {
         return false;
      }
   }
   return true;
}
/**
* 判斷日期dateStr1是否小於日期dateStr2的(日期格式爲"yyyy-mm-dd")
* 格式:年必須輸入四位數且必須在1900年以後;月日要麼輸入兩個數字,要麼輸入一個數字;
* @param dateStr1 第一個字符串
* @param dateStr2 第二個的字符串
* @return null(dateStr1格式不對或dateStr2格式不對); true(dateStr1 < dateStr2); false(dateStr1 >= dateStr2)
*/
function isBeforeDate(dateStr1, dateStr2) {
   if (!isDate(dateStr1) || !isDate(dateStr1)) {
      return null;
   }
   var s1 = dateStr1.split("-");
   var s2 = dateStr2.split("-");

   //強制轉換成數字
   var i=0;
   for (i=0;i<3 ;i++ )
   {
    s1[i]=s1[i]+0;
    s2[i]=s2[i]+0;
   }

   if (s1[0] < s2[0]) {//年小於
      return true;
   }
   else if (s1[0] == s2[0]) {//年相等
      if (s1[1] < s2[1]) {//月小於
         return true;
      }else if (s1[1] == s2[1]) {//月相等
   if (s1[2] < s2[2]) {//日小於
            return true;
         }
      }
   }
   return false;
}
/**
* 判斷日期dateStr1是否等於日期dateStr2的(日期格式爲"yyyy-mm-dd")
* 格式:年必須輸入四位數且必須在1900年以後;月日要麼輸入兩個數字,要麼輸入一個數字;
* @param dateStr1 第一個字符串
* @param dateStr2 第二個的字符串
* @return null(dateStr1格式不對或dateStr2格式不對); true(dateStr1 = dateStr2); false(dateStr1 != dateStr2)
*/
function isEqualDate(dateStr1, dateStr2) {
   if (!isDate(dateStr1) || !isDate(dateStr1)) {
      return null;
   }
   var s1 = dateStr1.split("-");
   var s2 = dateStr2.split("-");
   if (s1[0] != s2[0]) {//年不相等
      return false;
   }
   else {//年相等
      if (s1[1].charAt(0) == '0') {
         s1[1] = "" + s1[1].charAt(1);
      }
      if (s2[1].charAt(0) == '0') {
         s2[1] = "" + s2[1].charAt(1);
      }
      if (s1[1] != s2[1]) {//月不相等
         return false;
      }
      else {//月相等
         if (s1[2].charAt(0) == '0') {
            s1[2] = "" + s1[2].charAt(1);
         }
         if (s2[2].charAt(0) == '0') {
            s2[2] = "" + s2[2].charAt(1);
         }
         if (s1[2] != s2[2]) {//日不相等
            return false;
         }
      }
   }
   return true;
}
/**
* 判斷日期dateStr1是否小於日期dateStr2的(日期格式爲"yyyy-mm-dd hh:mm:ss")
* 格式:年必須輸入四位數且必須在1900年以後;月日時分秒要麼輸入兩個數字,要麼輸入一個數字;
* @param dateStr1 第一個字符串
* @param dateStr2 第二個的字符串
* @return null(dateStr1格式不對或dateStr2格式不對); true(dateStr1 < dateStr2); false(dateStr1 >= dateStr2)
*/
function isBeforeDateTime(dateStr1, dateStr2) {
   if (!isDateTime(dateStr1) || !isDateTime(dateStr1)) {
      return null;
   }
   var s1 = dateStr1.split(" ");
   var s2 = dateStr2.split(" ");
   if (isBeforeDate(s1[0], s2[0])) {//年月日小於
      return true;
   }
   else if (isEqualDate(s1[0], s2[0])) {//年月日相等
      var strTime1 = s1[1].split(":");
      var strTime2 = s2[1].split(":");
      if (strTime1[0].charAt(0) == '0') {
         strTime1[0] = "" + strTime1[0].charAt(1);
      }
      if (strTime2[0].charAt(0) == '0') {
         strTime2[0] = "" + strTime2[0].charAt(1);
      }
      if (strTime1[0] < strTime2[0]) {//小時小於
         return true;
      }
      else if (strTime1[0] == strTime2[0]) {//小時相等
         if (strTime1[1].charAt(0) == '0') {
            strTime1[1] = "" + strTime1[1].charAt(1);
         }
         if (strTime2[1].charAt(0) == '0') {
            strTime2[1] = "" + strTime2[1].charAt(1);
         }
         if (strTime1[1] < strTime2[1]) {//分小於
            return true;
         }
         else if (strTime1[1] == strTime2[1]) {//分相等
            if (strTime1[2].charAt(0) == '0') {
               strTime1[2] = "" + strTime1[2].charAt(1);
            }
            if (strTime2[2].charAt(0) == '0') {
               strTime2[2] = "" + strTime2[2].charAt(1);
            }
            if (strTime1[2] < strTime2[2]) {//秒小於
               return true;
            }
         }
      }
   }
   return false;
}
/**
* 判斷日期dateStr1是否等於日期dateStr2的(日期格式爲"yyyy-mm-dd hh:mm:ss")
* 格式:年必須輸入四位數且必須在1900年以後;月日時分秒要麼輸入兩個數字,要麼輸入一個數字;
* @param dateStr1 第一個字符串
* @param dateStr2 第二個的字符串
* @return null(dateStr1格式不對或dateStr2格式不對); true(dateStr1 = dateStr2); false(dateStr1 != dateStr2)
*/
function isEqualDateTime(dateStr1, dateStr2) {
   if (!isDateTime(dateStr1) || !isDateTime(dateStr1)) {
      return null;
   }
   var s1 = dateStr1.split(" ");
   var s2 = dateStr2.split(" ");
   if (isEqualDate(s1[0], s2[0])) {//年月日相等
      var strTime1 = s1[1].split(":");
      var strTime2 = s2[1].split(":");
      if (strTime1[0].charAt(0) == '0') {
         strTime1[0] = "" + strTime1[0].charAt(1);
      }
      if (strTime2[0].charAt(0) == '0') {
         strTime2[0] = "" + strTime2[0].charAt(1);
      }
      if (strTime1[0] == strTime2[0]) {//小時相等
         if (strTime1[1].charAt(0) == '0') {
            strTime1[1] = "" + strTime1[1].charAt(1);
         }
         if (strTime2[1].charAt(0) == '0') {
            strTime2[1] = "" + strTime2[1].charAt(1);
         }
         if (strTime1[1] == strTime2[1]) {//分相等
            if (strTime1[2].charAt(0) == '0') {
               strTime1[2] = "" + strTime1[2].charAt(1);
            }
            if (strTime2[2].charAt(0) == '0') {
               strTime2[2] = "" + strTime2[2].charAt(1);
            }
            if (strTime1[2] == strTime2[2]) {//秒相等
               return true;
            }
         }
      }
   }
   return false;
}
/*
獲得本機當前日期,格式YYYY-MM-DD
*/
function getLocalCurDate()
{
        var fun_dt = new Date();
 var fun_month = eval(1+fun_dt.getMonth());
        var fun_day = fun_dt.getDate();

 if(fun_month < 10) fun_month = "0"+fun_month;
 if(fun_day < 10) fun_day = "0"+fun_day;
 var fun_ds = fun_dt.getFullYear()+"-"+fun_month+"-"+fun_day;

 return fun_ds;
}
/**
* 檢測是否是數字(正浮點型)
* @param str 被檢查的字符串
* @param inummax整數位數
* @param dnummax小數位數
* @return true; false
*/
function isFloat(str,inummax,dnummax) {
   var Letters = "0123456789";
   var dotNum = 0;
   var dnum = 0;
   var inum = 0;
  
   for (i = 0; i < str.length; i++) {
      var checkChar = str.charAt(i);

      if (Letters.indexOf(checkChar) == -1) {
         if (checkChar == '.') {
            dotNum++;
            if (dotNum > 1) {
               return false;
            }
            continue;
         }
         return false;
      }else if (dotNum==1){
    //小數位數
   dnum++;   
   if (dnum>dnummax){
    return false;
   }
      }else{
    //整數位數
    inum++;
    if (inum>inummax){
    return false;
   }
   }

   }

   return true;
}

/**
* 檢測是否是數字(正整型)
* @param str 被檢查的字符串
* @return true; false
*/
function isNumber(str) {
   var Letters = "0123456789";
   if(str.length==0)
    return false

    for (i = 0; i < str.length; i++) {

   var checkChar = str.charAt(i);
      if (Letters.indexOf(checkChar) == -1)
         return false;
    }
     return true;
}

//2004年
//校驗輸入是否是電話號碼正確!
function isTel(telStr)
{
 
 var No="0123456789()+-";
 if(telStr.length==0)
 return false;

 for(i=0;i<telStr.length;i++)
   {
    var Checkstr=telStr.charAt(i);
    if(No.indexOf(Checkstr)==-1)
     return false;
   }
 return true;
}

//校驗register.email是否正確
function isEmail(strEmail)
{
 if(strEmail.length=0)
 return false;
 if(strEmail.charAt(0)=="."||
  strEmail.charAt(0)=="@"||
  strEmail.indexOf('@',0)==-1||
  strEmail.indexOf('.',0)==-1||
  strEmail.lastIndexOf('@')==
  strEmail.length-1 ||
  strEmail.lastIndexOf('.')==
  strEmail.length-1 )
  return false;
  return true;
}

/**
* 檢測是否是英文字母
* @param str 被檢查的字符串
* @return true; false
*/
function isEnglish(str) {
   var Letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
   for (i = 0; i < str.length; i++) {
      var checkChar = str.charAt(i);
      if (Letters.indexOf(checkChar) == -1) {
         return false;
      }
   }
   return true;
}
/**
* 檢測是否是合法的名字(字母,數字,下劃線,且第一個字符不能爲數字)
* @param str 被檢查的字符串
* @return true; false
*/
function isValidName(str) {
   var Letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_";
   for (i = 0; i < str.length; i++) {
      var checkChar = str.charAt(i);
      if (Letters.indexOf(checkChar) == -1) {
         return true;
      }
      if (i == 0 && isNumber(checkChar)) {
         return false;
      }
   }
   return false;
}
/**
* 判斷字符長度
* @param str 被檢查的字符串
* @return 檢查字符串的長度
*/
function getStrLength(str) {
    var len = str.length;
    for (i = 0; i < len; i++) {
        if (str.charCodeAt(i) < 0 || str.charCodeAt(i) > 255) {
         len++;
      }
    }
    return len;
}
/**
* 判斷字符串是否爲空
* @param str 被檢查的字符串
* @return true;false
*/
function isNull(str) {
   if (str == null || str == "") {
      return true;
   }
   else {
      return false;
   }
}
/*********************************************
* 功能:刪除輸入字符串中的空格左邊和右邊的中英文空格字符串
* 參數:str - 要刪除空格的字符串
* 返回值:刪除空格後的字符串
**********************************************/
function trim(str)
{
  var tempStr = "";
  var lenth = str.length;
  for(var fun_i=0;fun_i<lenth;fun_i++)
  {
    if(str.charAt(fun_i)!=" "&&str.charAt(fun_i)!=" ")
    {
       tempStr = str.substring(fun_i,lenth);
          break;
    }
  }
  lenth = tempStr.length;
  for(var fun_j=lenth-1;fun_j>=0;fun_j--)
  {
    var dd = tempStr.charAt(fun_j);
    if(dd!=" "&&dd!=" ")
    {
     tempStr=tempStr.substring(0,fun_j + 1);
        break;
    }
  }
  return tempStr;
}
/**
* 合併緊挨着的相同的字符
* @param str 被合併的字符串
* @param strChar 字符
* @return 完成合並後的字符串
*/
function combChar(str, strChar) {
   if (strChar == null || strChar == "") {
      return str;
   }
   var len = str.length;
   var index = 0;//上次匹配的地方
   var isFirst = "false";//第一個字符開始的子串是否與strChar匹配
   for (i = 0; i < len; i++) {
      if (strChar.length > (len - i)) {
         break;
      }
      var strTemp = str.substring(i, i + strChar.length);
      if (strTemp == strChar) {
         if (i == 0) {
            isFirst = "true";
         }
         //如果這次匹配與上次匹配是連續匹配
         if (index == (i - strChar.length)) {
            //如果上次匹配的地方不爲0,或者上次匹配的地方是第一個字符,纔是連續匹配
            if (index != 0 || isFirst == "true") {
               str = str.substring(0,index) + str.substring(index + strChar.length);
               len = len - strChar.length;
               i = i - strChar.length;
            }
         }
         index = i;
         i = i + strChar.length - 1;
      }
      else {
         index = 0;
      }
   }
    return str;
}

/**
* 用來校驗頁面上所有的type=text的input類型
* 判斷:null、length、type
*/

function checkinput(){
  var obj;
  var oobj;
  var j;
  var value;
  var des;
  var allownull;
  var allowlength;
  var len;
  var type;
  var dtype;
  var comp;
  var compcur;
  var compret;
  var decimaldigits;
  var integerdigits;
    obj = document.getElementsByTagName("input");
     for(j=0;j<obj.length;j++){
        oobj=obj(j)
 type=oobj.type
 if(!(type=="text"||type=="password")){
        continue;
        }

        des=oobj.des;
 if(des==null){
        des="";
        }

        value=oobj.value;
 if(value==null){
        value="";
        }

 //check null
    allownull=oobj.allownull;
         if(allownull!=null){
           if(allownull=="false"){
                 if(value==""){
                    alert(des+"不能爲空!");
                        oobj.focus();
                        return false;
                  }
            }
         }

  //check datatype
  dtype=oobj.dtype;
  if(dtype!=null&&value!=""){
     res=true;
            msg="";
            if(dtype=="number"){
    msg=des+"輸入格式應該爲數字格式!/r/n";
    res=isNumber(value);
            }else if(dtype=="age"){
            //檢務保障項目中用來判斷輸入的年齡是否有效
    if(value<16){
     msg="年齡應該大於16歲!";
     res=false;
    }else if(value>70){
      msg="年齡應該小於70歲!";
      res=false;
     } 
  }
            else if(dtype=="float"){

  decimaldigits=oobj.decimaldigits;//小數位數默認=2
  if (decimaldigits==null||decimaldigits==""){
   decimaldigits=2;
  }
  integerdigits=oobj.integerdigits;//整數位數默認=13
  if (integerdigits==null||integerdigits==""){
   integerdigits=13;
  }
  msg=des+"輸入格式應該爲小數格式!/r/n"+"整數位數爲"+integerdigits+"小數位數爲"+decimaldigits+"位";
  res=isFloat(value,integerdigits,decimaldigits);
            }else if(dtype=="date"){
  msg=des+"輸入格式應該爲日期格式!/r/n例如:2004-10-09";
  res=isDate(value);
                if (res){
                  comp=oobj.compare;//判斷兩種常規的日期比較方式
                  compcur=oobj.sysdate;//獲取系統日期,如果沒有則取客戶端日期
      if (compcur==null||compcur=="") compcur=getLocalCurDate();

                  if (comp!=null&&comp=="+curdate"){
                  //大於等於當前日期
                    res=isBeforeDate(compcur,value)||isEqualDate(compcur,value);
                    if (!res) {
                      msg=des+"輸入值應該大於等於當前日期!";
                    }
                  }else if (comp!=null&&comp=="-curdate"){
                    //小於等於當前日期
                    res=isBeforeDate(value,compcur)||isEqualDate(compcur,value);
                    if (!res) {
                      msg=des+"輸入值應該小於等於當前日期!";
                    }
                  }
                }
     }else  if(dtype=="datetime"){
  msg=des+"輸入格式應該爲時間格式!/r/n例如:2004-10-9 11:30:00";
  res=isDateTime(value);
     }else  if(dtype=="tel"){
  msg=des+"輸入格式應該爲電話號碼格式!/r/n例如:028-85169412";
  res=isTel(value);
     }else  if(dtype=="email"){
  msg=des+"輸入格式應該爲電子郵件格式!/r/n例如:[email protected]"
  res=isEmail(value)
     }else if(dtype=="xq"){
   msg=des+"輸入格式應該爲YYMMDD,且YY年份不能超過20年,MM月份不能超過12個月,DD日期不能超過31天!/r/n例如:010600一年零6個月"
   res=isXQ(value)
  }else if(dtype=="year"){
   msg=des+"輸入格式應該爲日期年份格式,年必須輸入四位數且必須在1900年以後!/r/n例如:2007";
   res=isYear(value);
  }

        if(!res){
   alert(msg);
   oobj.focus();
            oobj.select();
   return false;
     }
  }
 //check length
        allowlength=oobj.maxlength;
  if (allowlength==null)
  {
   allowlength=oobj.maxLength;
  }
 if(allowlength!=null){
   allowlen=parseInt(allowlength);
   len=getStrLength(value);
   if(!isNaN(allowlen)){
     if(allowlen<len){
        alert(des+"輸入長度最多隻能爲"+allowlength+"個字節("+parseInt(allowlength/2)+"個漢字)!")
  oobj.focus();
  return false;
     }
   }
  }
  //end for
  }
  return true;
}


/**
* 用來校驗頁面上所有的textarea
* 判斷:null、length
*/
function checktextarea(){
  var obj;
  var oobj;
  var jj;
  var value;
  var des;
  var allownull;
  var allowlength;
  var len;
  obj = document.getElementsByTagName("textarea");
  for( jj=0;jj<obj.length;jj++){
     oobj=obj(jj);
     des=oobj.des;
     if(des==null){
     des="";
     }
     value=oobj.value;
     if(value==null){
     value="";
     }

     //check null
     allownull=oobj.allownull;
     if(allownull!=null){
 if(allownull=="false"){
    if(value==""){
       alert(des+"不能爲空!")
       oobj.focus();
       return false;
     }
 }
     }

      //check length
      allowlength=oobj.maxlength;
   if (allowlength==null)
  {
   allowlength=oobj.maxLength;
  }
     if(allowlength!=null){
        allowlen=parseInt(allowlength);
 len=getStrLength(value);
 if(!isNaN(allowlen)){
     if(allowlen<len){
    alert(des+"輸入長度最多隻能爲"+allowlength+"個字節("+parseInt(allowlength/2)+"個漢字)!")
  oobj.focus();
  return false;
            }
 }
      }
   }
   return true;
}


/**
* 用來校驗頁面上所有的select
* 判斷:null
*/
function checkselect(){
  var obj;
  var oobj;
  var jj;
  var value;
  var des;
  var allownull;
     obj = document.getElementsByTagName("select");
     for( jj=0;jj<obj.length;jj++){
     //取提示
 oobj=obj(jj);
 des=oobj.des;
 if(des==null){
           des="";
        }
       value="";

        try{
     value=oobj.options[oobj.selectedIndex].value;
 }catch(e){
 }

 if(value==null){
          value="";
        }

 //check null
    allownull=oobj.allownull;
 if(allownull!=null){
      if(allownull=="false"){
     if(value==""){
        alert(des+"不能爲空!");
        oobj.focus();
        return false;
      }
              }
        }
    }
    return true;
}

/**
* 用來校驗頁面上所有的type=text的input、所有的textarea、select
*/
function checkFormData()
{
var res;

   res=checkinput();
   if(!res){
     return false;
   }
  res=checktextarea();
   if(!res){
     return false;
   }
   return checkselect();

}
/**
*通過出生日期計算當前年齡
* 出生日期必須小於當前日期,否則計算出錯。
*birthDate出生日期
*/
function getAge(birthDate){
  var curDate = new Date();//當前時間
  var s = birthDate.split("-");
  var birDate = new Date(s[0],s[1]-1,s[2]);
  var byear = birDate.getYear();
  if(byear < 2000) byear = byear+1900;
  var year = curDate.getYear()-byear
  var month = curDate.getMonth()-birDate.getMonth();
  var day = curDate.getDate()-birDate.getDate();
  if((month < 0) || (month==0 && day < 0)){
 year = year-1;
  }
//  var datediff = Math.abs(curDate.valueOf()- birDate.valueOf())/(365*24*60*60*1000);
//  return Math.floor(datediff);
  return year;
}

/**
*數組初始化
*例如:var MyArray= new initArray(17,18,19);
*      for(var i=0; i<MyArray.length; i++) alert(MyArray[i]);
*/
function initArray() {
  this.length = initArray.arguments.length
  for (var i = 0; i < this.length; i++)
    this[i] = initArray.arguments[i];
}

/**
*檢查日期的先後順序
*dateInput爲日期input的id字符串構成的數組,排列順序:從小到大
*調用示例:var MyArray= new initArray("date1","date2","date3");
* checkDateOrder(MyArray);
*/
function checkDateOrder(dateInput){
 //參數驗證
 if (dateInput == null)
 {
  return true;
 }

 if (dateInput.length == null)
 {
  return true;
 }

 if (dateInput.length == 1)
 {
  return true;
 }

 var obj1,obj2;
 for (var i=0;i<dateInput.length;i++){
  obj1=document.all(dateInput[i]);
  if (obj1==null) continue;
  if (trim(obj1.value)=="") continue;

  for (var j=i+1;j<dateInput.length;j++){
   obj2=document.all(dateInput[j]);
   if (obj2==null) continue;
   if (trim(obj2.value)=="") continue;

   if (isEqualDate(obj1.value,obj2.value)||isBeforeDate(obj1.value,obj2.value)) break;

   alert(obj2.des+"應大於"+obj1.des);
   return false;
  }
 }
 return true;
}
//校驗輸入身份證是否正確!
function isIDCard(idStr)
{
 var No="0123456789Xx";
 if(idStr.length==0) return true;
 if(trim(idStr)=="身份不明"||trim(idStr)=="無身份證") return true;
 
 var sgjdm="156";
 try{  
  if (document.all.gjdm.value !="") sgjdm=document.all.gjdm.value;
 }catch(e){  
 }
 
 if (sgjdm=="156")
 {
  
   if(idStr.length!=15&&idStr.length!=18) {
    alert("身份證號碼應爲15位或18位");
    return false;
   }
   for(i=0;i<idStr.length;i++){
    var Checkstr=idStr.charAt(i);


    if(No.indexOf(Checkstr)==-1){
     alert("身份證號碼應爲數字,字符 "+Checkstr+" 無效。");
     return false;
     }
   }
 }
 
 return true;
}
//取當月最後一天
function getlastday(month, year) {
      if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) { //是閏年
          if (month == 2) {
            return 29;
         }
      }
      else {//不是閏年
          if (month == 1 ||month == 3 ||month == 5 ||month == 7 ||month == 8 ||month == 10 ||month == 12 ) {
            return 31;
          }else if(month == 2){
           return 28;
          }else{
           return 30;
          }
      }
}

/**
* 是否是日期年份的檢查(日期年份格式爲"yyyy")
* 格式:年必須輸入四位數且必須在1900年以後;
* @param yearStr 被檢查的字符串;
* @return true(是日期年份格式"yyyy"); false(不是日期年份格式"yyyy")
*/
function isYear(yearStr) {
   var re = /^/d{4}$/;
   var r = yearStr.match(re);
   if (r == null) {
      return false;
   }
   else {
      var s = yearStr;
      if (s.substring(0,2) < 19 ) {
         return false;
      }
   }
   return true;
}

發佈了21 篇原創文章 · 獲贊 0 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章