前臺運用javaScript校驗數據(2)

 

/*
 * JavaScript 公用數據校驗模塊 for taiping project
 */

/*
函數清單:

1.檢查輸入參數是否全爲數字
CheckNumber

2.檢查輸入參數是否爲整數
CheckInteger

3.檢查輸入參數是否爲浮點數
CheckFloat

3.檢查輸入參數是否爲合法的指定整數部分長度和小數部分長度的浮點數(主要用於檢查金額數值是否合法)
CheckAmountFloat(str, intleng, fltleng)

4.檢查輸入參數是否爲合法的日期
CheckDate
CheckDate2

5.檢查輸入參數是否爲合法的email地址
CheckEmail

6.檢查輸入參數是否爲合法的身份證號碼
CheckID

7.檢查電話號碼是否正確
CheckTelephone

8.檢查密碼,只能爲字母或數字
CheckPassword

9.檢查BP機號碼
CheckBp

10.檢查電話號碼
CheckAreaPhone

11.檢查是否全爲字母
IsLetter

12.檢查年齡
CheckAge

13.檢查是否全爲空格
AllSpace

14.檢查日期在給定日期之後
DateIsLargerThanNow2

15.檢查日期在當前日期之後
DateIsLargerThanNow

16.將日期轉化爲標準格式( from yyyymmdd to yyyy-mm-dd)
Date2StandardFmt(date_string)

17.將form中,日期文本對象轉化爲標準格式( from yyyymmdd to yyyy-mm-dd)
DateObj2StandardFmt(date_obj)

18. 從合法身份證取生日
GetBirthdayFromID(id_value)

19. 從合法身份證取性別
GetGenderFromID(id_value)

20. 檢查是否爲當日以前的合法日期
IsByPastDate(str1)

21。 檢查會計期間的合法性

23.檢查保單號輸入是否合法
CheckPolicyCode(obj)

24 檢查投保單號輸入是否合法
CheckApplyCode(obj)

25 判斷一個字符串是否以指定字符串開頭
   startWith(str,start)

26 判斷一個字符串是否以指定字符串結尾
   endWith(str,end)

27 取得去除順序號後的號碼
   系統中,帶有順序號的號碼格式爲xxxxxx-xx,其中-xx爲順序號
   本方法返回"-"之前的部分,如果不含有"-",則返回原值本身;
   getPureCode(code)

28 檢查是否是團單保單號碼
   檢查規則:去除順序號後以088結尾即認爲是團單保單號碼,否則不是
   isGroupPolicyCode(code)

29 檢查是否是團單投保單號碼
   檢查規則:去除順序號後以050結尾即認爲是團單投保單號碼,否則不是
   iGroupvSendCode(code)

30 檢查是否是符合規則的個單投保單號碼
   isValidIndvSendCode(code)

31 檢查是否是符合規則的團單投保單號碼
   isValidGroupSendCode(code)

32 檢查是否是符合規則的投保單號碼
   code:投保單號碼  suffix:投保單號碼後綴(個單:001 團單:050)
   isValidSendCode(code,suffix)

*/

// 1.檢查輸入參數是否全爲數字
function CheckNumber(str){
    var rc=true;
    if (str+"" == "undefined" || str == null){
        rc=false;
    } else if(str.length==0){
 rc=false;
    } else {
 for(i=0;i<str.length;i++){
     if(str.charAt(i)<'0' || str.charAt(i)>'9'){
         rc=false;
         break;
     }
 }
    }
    return rc;
}
function checkNumber(str){
    return CheckNumber(str);
}

// 2.檢查輸入參數是否爲整數
function CheckInteger(str){
    var rc=true;
    if (str+"" == "undefined" || str == null){
 rc=false;
    } else{
 for(i=0;i<str.length;i++){
            if(i==0 && str.charAt(i)=='-'){
                continue;
            }
            if(str.charAt(i)<'0' || str.charAt(i)>'9'){
                rc=false;
                break;
            }
 }
    }
    return rc;
}
function checkInteger(str){
    return CheckInteger(str);
}


// 3.檢查輸入參數是否爲浮點數
function CheckFloat(str){
    var rc=true;
    oneDecimal=false;
    if (str+"" == "undefined" || str == null){
 rc=false;
    } else{
 for(i=0;i<str.length;i++){
     ch=str.charAt(i);
     if(i==0 && ch=='-'){
  continue;
     }
     if(ch=="." && !oneDecimal){
  oneDecimal=true;
         continue;
     }
     if ((ch< "0") || (ch >'9')){
         rc=false;
         break;
     }
 }
    }
    return rc;
}
function checkFloat(str){
 return CheckFloat(str);
}

// 3.檢查輸入參數是否爲合法的指定整數部分長度和小數部分長度的浮點數
function CheckAmountFloat(str, intleng, fltleng){
  if (CheckFloat(str)==false) {
   return false;
  }

  if(parseFloat(str)<0){ //ɧ¹�¸ººÍ
   if (str.length > intleng+fltleng+2) {
    return false;
   }
  }else{
   if (str.length > intleng+fltleng+1) {
    return false;
   }
  }


  var strArray = str.split(".");
  if (strArray.length > 2) {
   return false;
  }

  if(parseFloat(str)<0){ //ɧ¹�¸ººÍ
   if (strArray[0].length > intleng+1) {
    return false;
   }
  }else{
   if (strArray[0].length > intleng) {
    return false;
   }
  }

  if (strArray.length == 2) {
   if (strArray[1].length > fltleng) {
    return false;
   }
  }
  return true;
}

function checkAmountFloat(str, intleng, fltleng){
 return CheckAmountFloat(str, intleng, fltleng);
}

// 4.檢查輸入參數是否爲合法的日期
// modified by rock, 2001-7
function CheckDate(year,month,day){
    if(!CheckNumber(year)){
        return false;
    }
    if(!CheckNumber(month)){
        return false;
    }
    if(!CheckNumber(day)){
        return false;
    }
//change by jason
//    var dat = new Date(year - 1900, month - 1, day);
    var dat = new Date(year, month - 1, day);
    if (dat.getMonth() == (month-1)) {
        return true;
    } else {
        return false;
    }
}
function checkDate(year,month,day){
    return CheckDate(year,month,day);
}
function CheckDate2(str1){
    if (str1 + "" == "undefined" || str1 == null){
        return false;
    }
    var y,m,d;
    var i;
    i = str1.indexOf("-");
    if (i == -1 || i == str1.length) { return false; }
    y = str1.substring(0, i);
    str1 = str1.substring(i + 1);

    i = str1.indexOf("-");
    if (i == -1 || i == str1.length) { return false; }
    m = str1.substring(0, i);

    d = str1.substring(i + 1);

    return CheckDate(y,m,d);
}
function checkDate2(str1) {
    return CheckDate2(str1);
}

// 5.檢查輸入參數是否爲合法的email地址
function CheckEmail(str){
    var CHAR_LETTER_NUMERIC=1;
    var CHAR_UNDERLINE=2;
    var CHAR_DOT=3;
    var CHAR_AT=4;
    var CHAR_DIVIDE=5;
    var CHAR_END=6;
    var CHAR_OTHER=7;
    var DIV_CHAR=',';

    var rc=true;
    if (str+"" == "undefined" || str == null){
        rc=false;
        return rc;
    } else if(str.length==0){
        rc=true;
        return rc;
    }

    var exit_flag=false;
    var total_char=str.length;
    var pos=0;
    var cur_char;
    var cur_status=0;
    while((pos<=total_char) && (!exit_flag)){
        if(pos==total_char){
          cur_char=CHAR_END;
        }
        else if (str.charAt(pos)=='.'){
          cur_char=CHAR_DOT;
        }
        else if (str.charAt(pos)==DIV_CHAR){
          cur_char=CHAR_DIVIDE;
        }
        else if(str.charAt(pos)=='_'){
          cur_char=CHAR_UNDERLINE;
        }
        else if(str.charAt(pos)=='@'){
          cur_char=CHAR_AT;
        }
        else if(((str.charAt(pos)>='a')&&(str.charAt(pos)<='z'))||((str.charAt(pos)>='A')&&(str.charAt(pos)<='Z'))||((str.charAt(pos)>='0')&&(str.charAt(pos)<='9'))||(str.charAt(pos)=='-')){
          cur_char=CHAR_LETTER_NUMERIC;
        }
        else{
          cur_char=CHAR_OTHER;
        }
        switch (cur_status){
          case -1://error
            rc=false;
            exit_flag=true;
            break;

          case 0://初始狀態
            if((cur_char==CHAR_LETTER_NUMERIC)||(cur_char==CHAR_UNDERLINE)||(cur_char==CHAR_DOT)){
              cur_status=1;
            }
            else{
              rc=false;
              cur_status=-1;
            }
            break;
          case 1://用戶名
            if((cur_char==CHAR_LETTER_NUMERIC)||(cur_char==CHAR_UNDERLINE)||(cur_char==CHAR_DOT)){
              cur_status=1;
            }
            else if(cur_char==CHAR_AT){
              cur_status=2;
            }
            else{
              rc=false;
              cur_status=-1;
            }
            break;
          case 2://@
            if(cur_char==CHAR_LETTER_NUMERIC){
              cur_status=6;
            }
            else{
              rc=false;
              cur_status=-1;
            }
            break;

          case 6://"."
            if(cur_char==CHAR_LETTER_NUMERIC){
              cur_status=6;
            }
            else if(cur_char==CHAR_DOT){
              cur_status=3;
            }
            else{
              rc=false;
              cur_status=-1;
            }
            break;

          case 3://fisrt domain name
            if(cur_char==CHAR_LETTER_NUMERIC){
              cur_status=4;
            }
            else{
              rc=false;
              cur_status=-1;
            }
            break;
          case 4://not first domain name
            if(cur_char==CHAR_LETTER_NUMERIC){
              cur_status=4;
            }
            else if(cur_char==CHAR_DOT){
              cur_status=3;
            }
            else if(cur_char==CHAR_DIVIDE){
              cur_status=0;
            }
            else if(cur_char==CHAR_END){
              cur_status=5;
            }
            else{
              rc=false;
              cur_status=-1;
            }
            break;
          case 5://ok
            rc=true;
            exit_flag=true;
            break;
          default:
            rc=false;
            exit_flag=true;
            break;
        }
        pos++;
    }
    return rc;
}
function checkEmail(str){
  return CheckEmail(str);
}

// 6.檢查輸入參數是否爲合法的身份證號碼
// 18位身份證號碼參考 GB 11643

function CheckID(sID){
  var rc=false;
  if (sID+"" == "undefined" || sID == null || sID == ''){
    rc=true;
  } else if (CheckCertiCode(sID)==0) {
    rc=true;
  }

  return rc;
}

//檢查身份證校驗位
function CheckIDParityBit(sID){
  var W=new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
  var rc=false;
  if (sID+"" == "undefined" || sID == null || sID == ''){
    rc=true;
  }
  if(sID.length==18){
    var nCount=0;
    var nIdNum=0;
    for (var i=0;i<18;i++) {
      var c=sID.charAt(i);
      if((c=='X')||(c=='x')){
         nIdNum=10;
      } else if((c<='9')||(c>='0')) {
         nIdNum=c-'0';
      } else {
         return rc;
      }
      nCount+=nIdNum*W[i];
    }
    if((nCount%11)==1){
      rc=true;
    }
  }
  return rc;
}

function checkID(str){
    return CheckID(str);
}

// 7.檢查電話號碼是否正確
function CheckTelephone(str) {
    var rc=true;
    if (str+"" == "undefined" || str == null){
        rc=false;
    } else {
        for(i=0;i<str.length;i++) {
            if(!(str.charAt(i)>='0' && str.charAt(i)<='9')&& str.charAt(i)!='*' && str.charAt(i)!='('&& str.charAt(i)!=')'&& str.charAt(i)!='-'){
                rc= false;
                break;
            }
         }
    }
    return rc;
}
function checkTelephone(phone){
    return CheckTelephone(phone);
}

// 8.檢查密碼,只能爲字母或數字
function CheckPassword(str) {
    var rc=true;
    if (str+"" == "undefined" || str == null){
        rc=false;
    } else {
        for(i=0;i<str.length;i++) {
            if(str.charAt(i)<'0'||(str.charAt(i)>'9' && str.charAt(i)<'A')||(str.charAt(i)>'Z' && str.charAt(i)<'a')||str.charAt(i)>'z'){
                rc= false;
                break;
            }
        }
    }
    return rc;
}
function checkPassword(str){
    return CheckPassword(str);
}

// 9.檢查BP機號碼
function CheckBp(str) {
    var rc=true;
    if (str+"" == "undefined" || str == null){
        rc=false;
    } else {
        for(i=0;i<str.length;i++) {
            if((str.charAt(i)<'0' || str.charAt(i)>'9')&&(str.charAt(i)!='-'||str.charAt(i)!='*')){
                rc= false;
                break;
            }
        }
    }
    return rc;
}
function checkBp(str){
    return CheckBp(str);
}

// 10.檢查電話號碼
function CheckAreaPhone(str) {
    var rc=true;
    if (str+"" == "undefined" || str == null){
        rc=false;
    } else {
        for(i=0;i<str.length;i++) {
            if((str.charAt(i)<'0' || str.charAt(i)>'9')&&str.charAt(i)!='-'&&str.charAt(i)!='*'){
                    rc= false;
                    break;
            }
        }
    }
    return rc;
}
function checkAreaPhone(str){
    return CheckAreaPhone(str)
}

// 11.檢查是否全爲字母
function IsLetter(str){
    var rc=true;
    if (str+"" == "undefined" || str == null){
            rc=false;
    } else {
        for(i=0;i<str.length;i++) {
            if((str.charAt(i)>'Z' && str.charAt(i)<'a')||str.charAt(i)<'A' || str.charAt(i)>'z'){
                    rc=false;
                    break;
            }
        }
    }
    return rc;
}
function isLetter(str){
    return IsLetter(str);
}

// 12.檢查年齡
function CheckAge(age){
    var rc=true;
    if(CheckNumber(age)==false) {
        rc= false;
    } else if(age>=200) {
        rc= false;
    } else if(age<0){
        rc=false;
    }
    return rc;
}
function checkAge(age){
    return CheckAge(age);
}

// 13.檢查是否全爲空格
function AllSpace(str) {
    for(i=0;i<str.length-1;i++) {
        if(str.charAt(i)!=' ') {
            if(str.charAt(i)!=0xa1||str.chatAt(i+1)!=0xa1)
                return false;
            else
                i++;
        }
    }
    if(str.charAt(i)!=' ')
        return false;
    return true;
}
function allSpace(str) {
    return AllSpace(str);
}

// 14.檢查日期在給定日期之後
function DateIsLargerThanNow2(year, month, day, nowdate){
    var rc=false;
    if(!CheckDate(year,month,day)){
        rc=true;
    } else{
        var d1=new Date(Eear,month-1,day);
        var d0=new Date();
        if(d1.getTime()>d0.getTime()){
            rc=true;
        }
    }
    return rc;
}
function dateIsLargerThanNow2(year, month, day, nowdate){
    return DateIsLargerThanNow2(year, month, day, nowdate);
}

// 15.檢查日期在當前日期之後
function DateIsLargerThanNow(year, month, day){
    return DateIsLargerThanNow2(year,month,day,(new Date()));
}
function dateIsLargerThanNow(year, month, day){
    return DateIsLargerThanNow(year,month,day);
}

// 16.檢查身份證
function CheckCertiCode(id) {
   // check length
  try {
   if (id.length!=15 && id.length!=18) {
     alert("身份證長度非法!");
     return 1;
   }
   // check birth
   if (id.length == 15) {
      var birthday_year = "19" + id.substring(6, 8);
      var birthday_month = id.substring(8, 10);
      var birthday_day = id.substring(10, 12);
      if ( CheckDate(birthday_year, birthday_month, birthday_day)==false ) {
        alert("身份證出生日期非法!");
        return 2;
      }
   }
   if (id.length == 18) {
      var birthday_year = id.substring(6, 10);
      var birthday_month = id.substring(10, 12);
      var birthday_day = id.substring(12, 14);
      if ( CheckDate(birthday_year, birthday_month, birthday_day)==false ) {
        alert("身份證出生日期非法!");
        return 3;
      }
      // check parity bit
      if (!CheckIDParityBit(id)) {
        alert("身份證號碼錯誤!");
        return 5;
      }
   }
  } // end of try
  catch(e){
   window.alert ("校驗身份證出錯"+e.description);
   return 4;
  }
  return 0;
}

// 17.檢查身份證與生日、性別 (M:male;F:female)
function CheckIDBirthGender(id, birth, gender) {
   // check birth
  try {
   if (id.length == 15) {
      var id_birthday = "19" + id.substring(6, 8) +"-"+ id.substring(8, 10) +"-"+ id.substring(10, 12);
      var id_gender = id.substring(14);
   }
   else {
      var id_birthday = id.substring(6, 10) +"-"+ id.substring(10, 12) +"-"+ id.substring(12, 14);
      var id_gender = id.substring(16, 17);
   }
   if ( birth!=id_birthday ) {
      alert("生日與身份證不符!");
      return 1;
   }
   if (gender=="M" || gender=="m") {
       if ( id_gender!="1" && id_gender!="3" && id_gender!="5" && id_gender!="7" && id_gender!="9" ) {
            alert("性別與身份證不符!");
            return 2;
       }
   }
   else {
       if ( id_gender!="2" && id_gender!="4" && id_gender!="6" && id_gender!="8" && id_gender!="0" ) {
            alert("性別與身份證不符!");
            return 2;
       }
   }
  } // end of try
  catch(e){
 window.alert ("校驗身份證出錯"+e.description);
 return 3;
  }
  return 0;
}

// if date is error, the input date_string will be returned
// else return the date string with stardard format
function Date2StandardFmt( date_string ) {
    if (date_string == "")
        return;
    var date_src_string = date_string
    if ((date_string.length!=8 && date_string.length!=10)
        || (date_string.length==10 && date_string.indexOf("-")<0) ) {
        return date_src_string;
    }

    // no split character
    if ( date_string.indexOf("-")<0 ) {
        date_string = date_string.substring(0, 4) +"-"+date_string.substring(4, 6)+"-"+date_string.substring(6);
    }

    var date_year = date_string.substring(0, 4);
    var date_month = date_string.substring(5, 7);
    var date_day = date_string.substring(8);
    if ( CheckDate(date_year, date_month, date_day)==false ) {
        return date_src_string;
    }
    return date_string;

}

// if date is error, error msg will be alerted
// else upt the date obj's value to standard format
function DateObj2StandardFmt( date_obj ) {
    var date_string = date_obj.value;
    if (date_string == "")
        return;
    if ((date_string.length!=8 && date_string.length!=10)
        || (date_string.length==10 && date_string.indexOf("-")<0) ) {
        date_obj.focus();
        alert("日期長度不對!");
        return;
    }
    // no split character
    if ( date_string.indexOf("-")<0 ) {
        date_string = date_string.substring(0, 4) +"-"+date_string.substring(4, 6)+"-"+date_string.substring(6);
    }

    var date_year = date_string.substring(0, 4);
    var date_month = date_string.substring(5, 7);
    var date_day = date_string.substring(8);
    if ( CheckDate(date_year, date_month, date_day)==false ) {
        date_obj.focus();
        alert("無效日期格式!");
        return ;
    }

    date_obj.value =  date_string;

}
// if date is error, error msg will be alerted
// else upt the date obj's value to standard format
// return 0 if check valid,otherwise non-zero will be returned
function DateObj2StandardFmt1( date_obj ) {
    var date_string = date_obj.value;
    if (date_string == "")
        return 0;
    if ((date_string.length!=8 && date_string.length!=10)
        || (date_string.length==10 && date_string.indexOf("-")<0) ) {
        date_obj.focus();
        alert("日期長度不對!");
        return 1;
    }
    // no split character
    if ( date_string.indexOf("-")<0 ) {
        date_string = date_string.substring(0, 4) +"-"+date_string.substring(4, 6)+"-"+date_string.substring(6);
    }

    var date_year = date_string.substring(0, 4);
    var date_month = date_string.substring(5, 7);
    var date_day = date_string.substring(8);
    if ( CheckDate(date_year, date_month, date_day)==false ) {
        date_obj.focus();
        alert("無效日期格式!");
        return 1;
    }

    date_obj.value =  date_string;
    return 0;

}
// if date is error, error msg will be alerted
// else upt the date obj's value to format
//add by wencai.yan 2001-11-09
function DateObj2Fmt( date_obj ) {
    var date_string = date_obj.value;
    if (date_string == "")
        return;
    if (
      (  date_string.length!=4 && date_string.length!=6 && date_string.length!=7
       && date_string.length!=8 && date_string.length!=10
      )
        || (date_string.length==7 && date_string.indexOf("-")<0)
        || (date_string.length==10 && date_string.indexOf("-")<0)
       ) {
        date_obj.focus();
        alert("日期長度不對!");
        return;
    }
    // no split character
    if ( date_string.indexOf("-")<0 && date_string.length==8 ) {
        date_string = date_string.substring(0, 4) +"-"+date_string.substring(4, 6)+"-"+date_string.substring(6);
    }
  if ( date_string.indexOf("-")<0 && date_string.length==6 ) {
        date_string = date_string.substring(0, 4) +"-"+date_string.substring(4);
    }
    if(date_string.length>=8){
      var date_year = date_string.substring(0, 4);
      var date_month = date_string.substring(5, 7);
      var date_day = date_string.substring(8);
      if ( CheckDate(date_year, date_month, date_day)==false ) {
          date_obj.focus();
          alert("無效日期格式!");
          return ;
      }
    }
  if(date_string.length<8 && date_string.length>4){
      var date_year = date_string.substring(0, 4);
      var date_month = date_string.substring(5, 7);
      var date_day = "01";
      if ( CheckDate(date_year, date_month,date_day)==false ) {
          date_obj.focus();
          alert("無效日期格式!");
          return ;
      }
    }
    if(date_string.length=4){
      var date_year = date_string.substring(0, 4);
      var date_month = "01"
      var date_day = "01";
      if ( CheckDate(date_year, date_month,date_day)==false ) {
          date_obj.focus();
          alert("無效日期格式!");
          return ;
      }
    }
    date_obj.value =  date_string;

}

// return value : M 男 F 女
function GetGenderFromID( id_value ) {
   var gender;
   var id_gender;
   if ( id_value.length==15 )
      id_gender = id_value.substring(14);
   else if ( id_value.length==18 )
      id_gender = id_value.substring(16, 17);
   else
       return "";
   if ( id_gender=="1" || id_gender=="3" || id_gender=="5" || id_gender=="7" || id_gender=="9" ) {
            gender = "M";
   }
   else  {
      gender = "F";
   }
   return gender;
}

// return value : yyyy-mm-dd
function GetBirthdayFromID( id ) {
  try {
   var birthday;
   if ( id.length==15 )
      birthday = "19" + id.substring(6, 8)+"-"+id.substring(8, 10)+"-"+id.substring(10, 12);
   else if ( id.length==18 )
      birthday = id.substring(6, 10)+"-"+id.substring(10, 12)+"-"+id.substring(12, 14);
   else
      birthday = "";
   return birthday
  }
  catch(e){
 window.alert ("解析身份證出錯"+e.description);
 return "";
  }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章