xiaoniao

          2007年7月16日

          checkform

          <!-- ---------------------------------------------------------------------
          //
          // File: form.htc
          // version: 1.0
          // Description:客戶端表單驗證.
          // author: 伍子
          // ModifyBy: Arsene
          //
          //-------------------------------------------------------------------- -->
          /**
          表單定義:
          <form name="form1" action="" style="behavior:url('form.htc')"></form>
          客戶端表單驗證是由表單的onSubmit事件觸發,由于表單的onSubmit事件只能由提交按鈕觸發,
          所以如果要用函數提交表單form1.submit(),則必須同時執行form1.onSubmit()。

          類型定義:

          一、整型(int)
          定義:
          valueType="int"
          屬性:
          objName 對象名稱(字符串)
          mustInput 必輸項(true/false)
          minInput 最小值(數字)
          maxInput 最大值(數字)
          舉例:
          <input type="text" name="test" valueType="int" objName="總載重噸" mustInput="true" maxInput="10000">

          二、浮點型(float)
          定義:
          valueType="float"
          屬性:
          objName 對象名稱(字符串)
          mustInput 必輸項(true/false)
          minInput 最小值(數字)
          maxInput 最大值(數字)
          decimalLen小數位數(數字)
          舉例:
          <input type="text" name="test" valueType="float" objName="運價" mustInput="true" maxInput="10000.50" decimalLen="2">

          三、字符串(string)
          定義:
          valueType="string"
          屬性:
          objName 對象名稱(字符串)
          mustInput 必輸項(true/false)
          stringLen 字符串長度(數字)
          舉例:
          <input type="text" name="test" valueType="string" objName="英文船名" mustInput="true" stringLen="100">

          十、字符型(char)
          定義:
          valueType="char"
          屬性:
          objName 對象名稱(字符串)
          mustInput 必輸項(true/false)
          charsLen 字符串長度(數字)
          舉例:
          <input type="text" name="test" valueType="char" objName="愛好" mustInput="true" charsLen="5">

          四、日期(date)
          定義:
          valueType="date"
          屬性:
          objName 對象名稱(字符串)
          mustInput 必輸項(true/false)
          舉例:
          <input type="text" name="test" valueType="date" objName="開始日期" mustInput="true" before="ddd,ccc,sss" after="aa">
          備注:
          日期現在只能校驗的格式為(yyyy-mm-dd)

          五、郵箱(email)
          定義:
          valueType="email"
          屬性:
          objName 對象名稱(字符串)
          mustInput 必輸項(true/false)
          舉例:
          <input type="text" name="test" valueType="email" objName="郵箱" mustInput="true">

          六、單選(radio)
          定義:
          valueType="radio"
          屬性:
          objName 對象名稱(字符串)
          mustSelect 必輸項(true/false)
          舉例:
          <input type="radio" name="test" valueType="radio" objName="租船方式" mustSelect="true">
          備注:
          對于同一組單選按鈕,只需要定義第一個即可。

          七、復選(checkbox)
          定義:
          valueType="checkbox"
          屬性:
          objName 對象名稱(字符串)
          minSelect 最小選擇數(數字)
          maxSelect 最大選擇數(數字)
          舉例:
          <input type="checkbox" name="test" valueType="checkbox" objName="愛好" minSelect="2" maxSelect="5">
          備注:
          對于同一組復選按鈕,只需要定義第一個即可。

          八、下拉列表框(select)
          定義:
          valueType="select"
          屬性:
          objName 對象名稱(字符串)
          mustSelect 必輸項(true/false)
          舉例:
          <select name="test" valueType="select" objName="租船方式" mustSelect="true">

          九、列表框(list)
          定義:
          valueType="list"
          屬性:
          objName 對象名稱(字符串)
          minSelect 最小選擇數(數字)
          maxSelect 最大選擇數(數字)
          舉例:
          <select name="test" valueType="list" objName="愛好" minSelect="2" maxSelect="5">
          **/

          var es; //錯誤個數
          var msg; //錯誤消息

          function addMsg(obj, msg, type) {
          if (type=="radio" || type=="checkbox") {
           var warning = document.getElementById("warning");
           if (msg != "") {
            es = es + 1;
            warning.parentNode.parentNode.style.display = '';
            //var alarm = document.createElement("<img name=alarm src=./img/alarm.gif hspace=8 height=16 width=16>")
            //var warningMsg = document.createElement("<span style='color: #FF0000;font-weight: bold;'>"+msg+"</span>")
            if (!warning.hasChildNodes()) {
             warning.innerHTML = "<img name=alarm src=./img/alarm.gif hspace=8 height=16 width=16>" +
                  "<span style='color: #FF0000;font-weight: bold;'>"+msg+"</span>";
            }
            //insertAfter(obj.parentNode, alarm, obj);
           } else {
            warning.parentNode.parentNode.style.display = 'none';
            //if (hasAlarm(obj)) obj.parentNode.removeChild(obj.nextSibling);
            if (warning.hasChildNodes()) {
             warning.innerHTML = "";
            }
           }
          } else {
           if (msg != "") {
            //alert(obj.name);
            //alert(obj.parentNode.title);
            es = es + 1;
            obj.parentNode.title = msg;
            var alarm = document.createElement("<img name=alarm src=./img/alarm.gif hspace=8 height=16 width=16>")
            if (!(hasAlarm(obj))) insertAfter(obj.parentNode, alarm, obj);
            //alert(es);
           } else {
            //alert(obj.name);
            obj.parentNode.title = "";
            //alert(obj.parentNode.title);
            if (hasAlarm(obj)) obj.parentNode.removeChild(obj.nextSibling);
           }
            }
          }

          function insertAfter(parent, node, referenceNode) {
           parent.insertBefore(node, referenceNode.nextSibling);
          }

          function prependChild(parent, node) {
              parent.insertBefore(node, parent.firstChild);
          }
          //判斷obj下一個節點nodeName是否為IMG,而且name為alarm
          function hasAlarm(obj) {
           var x = obj.nextSibling;
           if (x != null) {
              if (x.nodeName == "IMG" && x.name == "alarm") {
                return true;
             } else {
                return false;
             }
           } else {
              return false;
           }
          }
          //判斷msg是否為空,如果不為空,則添加 and
          function formcheck_delNull(message) {
           var s = message;
           if (s != "") {
            s = s + "\n";
           }
           return s;
          }

          function checkForm(thisform)
          {
          es = 0; //初始化錯誤個數
          //var oForm=event.srcElement;
          var oForm=thisform;
          var eles = oForm.elements;
          //遍歷所有表元素
          for(var i=0;i<eles.length;i++)
          {
          msg = ""; //清空msg
          //是否需要驗證
          var sType=eles[i].valueType;
          if(sType)
          {
          if(eles[i].mustInput!=null && eles[i].mustInput)
          {
          if(trim(eles[i].value)=="")
          {
          if(eles[i].objName!=null)
          {
           //alert(eles[i].objName+"不可以為空");
           //addMsg(eles[i], eles[i].objName+"不可以為空");
           msg = formcheck_delNull(msg) + eles[i].objName+"不可以為空";
          }
          else
          {
          //alert("該文本框為必輸字段");
           //addMsg(eles[i], "該文本框為必輸字段");
           msg = formcheck_delNull(msg) + "該文本框為必輸字段";
          }
          } else {
           //delMsg(eles[i]);
           //alert(es);
          }
          }
          switch(sType)
          {
          //整數
          case "int":
          checkInt(eles[i]);
          break;

          //小數
          case "float":
          checkFloat(eles[i]);
          break;

          //字符串
          case "string":
          checkString(eles[i]);
          break;

          //字符型
          case "char":
          checkChar(eles[i]);
          break;

          //年份
          case "year":
          checkYear(eles[i]);
          break;

          //日期
          case "date":
          checkDate(eles[i]);
          break;

          //郵件
          case "email":
          checkEmail(eles[i]);
          break;

          //單選按鈕
          case "radio":
          checkRadio(eles[i]);
          break;
          //復選按鈕
          case "checkbox":
          checkBox(eles[i]);
          break;
          //下拉列表框
          case "select":
          checkSelect(eles[i]);
          break;
          //列表框
          case "list":
          checkList(eles[i]);
          break;

          }
          } else {
           //非需要校驗類型,則不進行error的檢查
           continue;
          }
           addMsg(eles[i], msg, sType);
          }
          //身份證相關校驗
          var sfz = oForm.sfz;
          var csrq= oForm.csrq;
          var sex = oForm.sex;
          //var sfzmsg;
          /*if(sfz==null||csrq==null||sex==null){
           if (es > 0) {
            event.returnValue=false;
            return false;
           } else {
            event.returnValue=true;
            return true;
           }
          }*/
          if (sfz!=null && csrq!=null && sex!=null) {
           if(sfz.value.length>0) {
            if(sfz.value.length>0&&csrq.value.length>0&&sex.value.length>0){
             /*if(!CheckIdCard(sfz.value,sex.value,strrq10to8(csrq.value))){
              addMsg(sfz, msg, "char");
             } else {
              addMsg(sfz, msg,)
             }*/
             CheckIdCard(sfz.value,sex.value,strrq10to8(csrq.value));
             addMsg(sfz, msg, "char");
           } else {
            var sfzmsg = "由于以下原因,身份證驗證失敗:";
            if (sfz.value.length <=0) {
             msg = formcheck_delNull(msg) + "身份證號碼不能為空";
            }
            if (csrq.value.length <=0) {
             msg = formcheck_delNull(msg) + "出生日期不能為空";
            }
            if (sex.value.length <=0) {
             msg = formcheck_delNull(msg) + "性別不能為空";
            }
            addMsg(sfz, sfzmsg+msg, "char");
           }
           }
          }

          /*if (sfz.value.length<=0) {
            sfzmsg = "身份證驗證失敗,身份證號碼不能為空";
            addMsg(sfz, sfzmsg, "char");
          } else if (csrq.value.length<=0) {
            sfzmsg = formcheck_delNull(sfzmsg) + "身份證驗證失敗,出生日期不能為空";
            addMsg(sfz, sfzmsg, "char");
          } else if (sex.value.length<=0) {
            sfzmsg = formcheck_delNull(sfzmsg) + "身份證驗證失敗,性別不能為空";
            addMsg(sfz, sfzmsg, "char");
            if (es > 0) {
             event.returnValue=false;
             return false;
            } else {
             event.returnValue=true;
             return true;
            }
          } else {
           if(!CheckIdCard(sfz.value,sex.value,strrq10to8(csrq.value))){
            addMsg(sfz, msg, "char");
            if (es > 0) {
             event.returnValue=false;
             return false;
            } else {
             event.returnValue=true;
             return true;
            }
           }
          }*/


          //alert(es);
          if (es > 0) {
           event.returnValue=false;
           alert("請檢查數據錄入是否正確、完整。\n(欲知詳情請點擊紅色叉叉處。)");
           return false;
          } else {
           event.returnValue=true;
           return true;
          }
          }

          /***檢查是否為整數***/
          function checkInt(ele)
          {
          if(!isInt(ele.value))
          {
          //alert("您輸入的"+ convertNullToSpace(ele.objName)+"值應為整數");
           //addMsg(ele, "您輸入的"+ convertNullToSpace(ele.objName)+"值應為整數");
           //msg = msg + "您輸入的"+ convertNullToSpace(ele.objName)+"值應為整數";
           msg = formcheck_delNull(msg) + "您輸入的"+ convertNullToSpace(ele.objName)+"值應為整數";
          }
          else
          {
           //delMsg(ele);
          if(ele.maxInput!=null && !isNaN(ele.maxInput))
          if(parseInt(ele.maxInput)<parseInt(ele.value))
          {
          //alert("您輸入的"+ convertNullToSpace(ele.objName)+"值應該小于"+ele.maxInput);
           //addMsg(ele, "您輸入的"+ convertNullToSpace(ele.objName)+"值應該小于"+ele.maxInput);
           //msg = msg + "您輸入的"+ convertNullToSpace(ele.objName)+"值應該小于"+ele.maxInput;
           msg = formcheck_delNull(msg) + "您輸入的"+ convertNullToSpace(ele.objName)+"值應該小于"+ele.maxInput;
          }
          if(ele.minInput!=null && !isNaN(ele.minInput))
          if(parseInt(ele.minInput)>parseInt(ele.value))
          {
          //alert("您輸入的"+ convertNullToSpace(ele.objName)+"值應該大于"+ele.minInput);
           //addMsg(ele, "您輸入的"+ convertNullToSpace(ele.objName)+"值應該大于"+ele.minInput);
           //msg = msg + "您輸入的"+ convertNullToSpace(ele.objName)+"值應該大于"+ele.minInput;
           msg = formcheck_delNull(msg) + "您輸入的"+ convertNullToSpace(ele.objName)+"值應該大于"+ele.minInput;
          }
          }
          }

          /***檢查是否為小數***/
          function checkFloat(ele)
          {
          if(isNaN(ele.value))
          {
          //alert("您輸入的"+ convertNullToSpace(ele.objName)+"值應為整數或小數");
           //addMsg(ele, "您輸入的"+ convertNullToSpace(ele.objName)+"值應為整數或小數");
           //msg = msg + "您輸入的"+ convertNullToSpace(ele.objName)+"值應為整數或小數";
           msg = formcheck_delNull(msg) + "您輸入的"+ convertNullToSpace(ele.objName)+"值應為整數或小數";
          }
          else
          {
          if(ele.decimalLen!=null && !checkDecimal(ele.value,ele.decimalLen))
          {
          //alert("您輸入的"+convertNullToSpace(ele.objName)+"值小數位最多為"+ele.decimalLen);
           //addMsg(ele, "您輸入的"+convertNullToSpace(ele.objName)+"值小數位最多為"+ele.decimalLen);
           //msg = msg + "您輸入的"+convertNullToSpace(ele.objName)+"值小數位最多為"+ele.decimalLen;
           msg = formcheck_delNull(msg) + "您輸入的"+convertNullToSpace(ele.objName)+"值小數位最多為"+ele.decimalLen;
          }
          if(ele.maxInput!=null && !isNaN(ele.maxInput))
          if(parseInt(ele.maxInput)<parseInt(ele.value))
          {
          //alert("您輸入的"+ convertNullToSpace(ele.objName)+"值應該小于"+ele.maxInput);
           //addMsg(ele, "您輸入的"+ convertNullToSpace(ele.objName)+"值應該小于"+ele.maxInput);
           //msg = msg + "您輸入的"+ convertNullToSpace(ele.objName)+"值應該小于"+ele.maxInput;
           msg = formcheck_delNull(msg) + "您輸入的"+ convertNullToSpace(ele.objName)+"值應該小于"+ele.maxInput;
          }
          if(ele.minInput!=null && !isNaN(ele.minInput))
          if(parseInt(ele.minInput)>parseInt(ele.value))
          {
          //alert("您輸入的"+ convertNullToSpace(ele.objName)+"值應該大于"+ele.minInput);
           //add(msg, "您輸入的"+ convertNullToSpace(ele.objName)+"值應該大于"+ele.minInput);
           //msg = msg + "您輸入的"+ convertNullToSpace(ele.objName)+"值應該大于"+ele.minInput;
           msg = formcheck_delNull(msg) + "您輸入的"+ convertNullToSpace(ele.objName)+"值應該大于"+ele.minInput;
          }
          }
          }

          /***檢查是否為字符串***/
          function checkString(ele)
          {
          if(ele.stringLen!=null && !isNaN(ele.stringLen))
          {
          var value=new String(ele.value);
          if(value.length>parseInt(ele.stringLen))
          {
          //alert("您輸入的"+convertNullToSpace(ele.objName)+"最大長度為"+ele.stringLen);
           //addMsg(ele, "您輸入的"+convertNullToSpace(ele.objName)+"最大長度為"+ele.stringLen);
           //msg = msg + "您輸入的"+convertNullToSpace(ele.objName)+"最大長度為"+ele.stringLen;
           msg = formcheck_delNull(msg) + "您輸入的"+convertNullToSpace(ele.objName)+"最大長度為"+ele.stringLen;
          }
          }
          }

          /***檢查是否為字符型***/
          function checkChar(ele)
          {
          if(ele.charLen!=null && !isNaN(ele.charLen))
          {
          var value=new String(ele.value);
          if(value.length>parseInt(ele.charLen))
          {
          //alert("您輸入的"+convertNullToSpace(ele.objName)+"最大長度為"+ele.charLen);
           msg = formcheck_delNull(msg) + "您輸入的"+convertNullToSpace(ele.objName)+"最大長度為"+ele.charLen;
          }
          //字母數字
          var patrn=/^[a-zA-Z0-9]+[a-zA-Z0-9]$/;
          if (value.length>0&&!patrn.exec(value)){
           //alert("您輸入的"+convertNullToSpace(ele.objName)+"字符應為字母或數字");
           msg = formcheck_delNull(msg) + "您輸入的"+convertNullToSpace(ele.objName)+"字符應為字母或數字";
          }

          }
          }

          /***檢查是否為年份格式***/
          function checkYear(ele) {
           if(ele.mustInput!=null && ele.mustInput && !isYear(ele.value)) {
            msg = formcheck_delNull(msg) + convertNullToSpace(ele.objName)+"請輸入有效年份(yyyy)";
           }
           var parm1 = ele.before;
           var parm2 = ele.after;
           //在設置年份之前
           if(parm1!=null){
           var mb=new Array();
           mb = parm1.split(",");
           for(var ii=0;ii<mb.length;ii++){
            //當前校驗控件值
            var rqz1 = ele.value;
            //設置目標控件值
            var d = new Date();
            var rqz2 = d.getFullYear();
            if(mb[ii]!="today"){
             rqz2 = eval("document.all."+mb[ii]).value;
            }
            if(parseInt(rqz1) <= parseInt(rqz2)){
             //return true;
             if (ele.minSpan!=null && !isNaN(ele.minSpan)) {
              if (parseInt(rqz1) > parseInt(rqz2) - parseInt(ele.minSpan)) {
               if(mb[ii]!="today"){
                msg = formcheck_delNull(msg) + convertNullToSpace(ele.objName)+"與"+eval("document.all."+mb[ii]).objName+"的時間跨度應該大于等于"+ele.minSpan;
               }else{
                msg = formcheck_delNull(msg) + convertNullToSpace(ele.objName)+"與當前年份的時間跨度應該大于等于"+ele.minSpan;
               }
              }
             }
             
             if (ele.maxSpan!=null && !isNaN(ele.maxSpan)) {
              if (parseInt(rqz1) < parseInt(rqz2) - parseInt(ele.maxSpan)) {
               if(mb[ii]!="today"){
                msg = formcheck_delNull(msg) + convertNullToSpace(ele.objName)+"與"+eval("document.all."+mb[ii]).objName+"的時間跨度應該小于等于"+ele.maxSpan;
               }else{
                msg = formcheck_delNull(msg) + convertNullToSpace(ele.objName)+"與當前年份的時間跨度應該小于等于"+ele.maxSpan;
               }
              }
             }
            }else{
             if(mb[ii]!="today"){
              msg = formcheck_delNull(msg) + convertNullToSpace(ele.objName)+"應該小于"+eval("document.all."+mb[ii]).objName;
             }else{
              msg = formcheck_delNull(msg) + convertNullToSpace(ele.objName)+"應該小于當前年份";
             }
            }
             }
           }
           //在設置年份后
           if(parm2!=null){
           var mb=new Array();
           mb = parm2.split(",");
           for(var ii=0;ii<mb.length;ii++){
            //當前校驗控件值
            var rqz1 = ele.value;
            //設置目標控件值
            var d = new Date();
            var rqz2 = d.getFullYear();
            if(mb[ii]!="today"){
             rqz2 = eval("document.all."+mb[ii]).value;
            }
            if(parseInt(rqz1) >= parseInt(rqz2)){
             //return true;
             if (ele.minSpan!=null && !isNaN(ele.minSpan)) {
              if (parseInt(rqz1) < parseInt(rqz2) + parseInt(ele.minSpan)) {
               if(mb[ii]!="today"){
                msg = formcheck_delNull(msg) + convertNullToSpace(ele.objName)+"與"+eval("document.all."+mb[ii]).objName+"的時間跨度應該大于等于"+ele.minSpan;
               }else{
                msg = formcheck_delNull(msg) + convertNullToSpace(ele.objName)+"與當前年份的時間跨度應該大于等于"+ele.minSpan;
               }
              }
             }
             
             if (ele.maxSpan!=null && !isNaN(ele.maxSpan)) {
              if (parseInt(rqz1) > parseInt(rqz2) + parseInt(ele.maxSpan)) {
                if(mb[ii]!="today"){
                 msg = formcheck_delNull(msg) + convertNullToSpace(ele.objName)+"與"+eval("document.all."+mb[ii]).objName+"的時間跨度應該小于等于"+ele.maxSpan;
                }else{
                 msg = formcheck_delNull(msg) + convertNullToSpace(ele.objName)+"與當前年份的時間跨度應該小于等于"+ele.maxSpan;
                }
              }
             }
            }else{
             if(mb[ii]!="today"){
              msg = formcheck_delNull(msg) + convertNullToSpace(ele.objName)+"應該大于"+eval("document.all."+mb[ii]).objName;
             }else{
              msg = formcheck_delNull(msg) + convertNullToSpace(ele.objName)+"應該大于當前日期";
             }
            }
             }
           }
          }

          /***檢查是否為日期格式***/
          function checkDate(ele)
          {
          if(ele.mustInput!=null && ele.mustInput&&!isDate(ele.value))
          {
           msg = formcheck_delNull(msg) + convertNullToSpace(ele.objName)+"請輸入有效日期(yyyy-mm-dd)";
          }
          if(ele.value!=null&&ele.value!=""&&!isDate(ele.value))
          {
           msg = formcheck_delNull(msg) + convertNullToSpace(ele.objName)+"請輸入有效日期(yyyy-mm-dd)";
          }
          var parm1 = ele.before;
          var parm2 = ele.after;
          //在設置日期之前
          if(parm1!=null){
           var mb=new Array();
           mb = parm1.split(",");
           for(var ii=0;ii<mb.length;ii++){
            //當前校驗控件值
            var rqz1 = ele.value;
            //設置目標控件值
            var d = new Date();
            var rqz2 = d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate();
            if(mb[ii]!="today"){
             rqz2 = eval("document.all."+mb[ii]).value;
            }
            /*if(rqz1==""){
             //return true;
             if (msg != "") {
              addMsg(ele, msg);
              return false;
             } else { return true; }
            }*/
            if(chkBefore(rqz1,rqz2)==true){
             //return true;
            }else{
             if(mb[ii]!="today"){
              

          //alert(convertNullToSpace(ele.objName)+"應該小于等于"+document.getElementById(parm1).objName);
              msg = formcheck_delNull(msg) + convertNullToSpace(ele.objName)+"應該小于等于"+eval("document.all."+mb[ii]).objName;
             }else{
              //alert(convertNullToSpace(ele.objName)+"應該小于等于當前日期");
              msg = formcheck_delNull(msg) + convertNullToSpace(ele.objName)+"應該小于等于當前日期";
             }
            }
           }
          }
          //在設置日期之后
          if(parm2!=null){
           var mb=new Array();
           mb = parm2.split(",");
           for(var ii=0;ii<mb.length;ii++){
            //當前校驗控件值
            var rqz1 = ele.value;
            //設置目標控件值
            var d = new Date();
            var rqz2 = d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate();
            if(mb[ii]!="today"){
             rqz2 = eval("document.all."+mb[ii]).value;
            }
            /*if(rqz1==""){
             //return true;
             if (msg != "") {
              addMsg(ele, msg);
              return false;
             } else { return true; }
            }*/
            if(chkAfter(rqz1,rqz2)==true){
             //return true;
            }else{
             if(mb[ii]!="today"){
              //alert(convertNullToSpace(ele.objName)+"應該大于"+document.getElementById(parm2).objName);
              msg = formcheck_delNull(msg) + convertNullToSpace(ele.objName)+"應該大于"+eval("document.all."+mb[ii]).objName;
             }else{
              //alert(convertNullToSpace(ele.objName)+"應該大于當前日期");
              msg = formcheck_delNull(msg) + convertNullToSpace(ele.objName)+"應該大于當前日期";
             }
            }
           }
          }

          }

          /***檢查日期1是否大于日期2***/
          function chkBefore(rqz1,rqz2){
           if (rqz1=="" || rqz2=="") { return true;}
           var arr1 = rqz1.split("-");
              var arr2 = rqz2.split("-");
              var date1 = new Date(arr1[0],parseInt(arr1[1].replace(/^0/,""),10) - 1,arr1[2]);
              var date2 = new Date(arr2[0],parseInt(arr2[1].replace(/^0/,""),10) - 1,arr2[2]);
              if(arr1[1].length == 1)
                  arr1[1] = "0" + arr1[1];
              if(arr1[2].length == 1)
                  arr1[2] = "0" + arr1[2];
              if(arr2[1].length == 1)
                  arr2[1] = "0" + arr2[1];
              if(arr2[2].length == 1)
                  arr2[2]="0" + arr2[2];
              var d1 = arr1[0] + arr1[1] + arr1[2];
              var d2 = arr2[0] + arr2[1] + arr2[2];
              if(parseInt(d1,10) <= parseInt(d2,10)){
                 return true;
              }else{
              return false;
              }
          }

          /***檢查日期1是否小于日期2***/
          function chkAfter(rqz1,rqz2){
           if (rqz1=="" || rqz2=="") { return true;}
            var arr1 = rqz1.split("-");
              var arr2 = rqz2.split("-");
              var date1 = new Date(arr1[0],parseInt(arr1[1].replace(/^0/,""),10) - 1,arr1[2]);
              var date2 = new Date(arr2[0],parseInt(arr2[1].replace(/^0/,""),10) - 1,arr2[2]);
              if(arr1[1].length == 1)
                  arr1[1] = "0" + arr1[1];
              if(arr1[2].length == 1)
                  arr1[2] = "0" + arr1[2];
              if(arr2[1].length == 1)
                  arr2[1] = "0" + arr2[1];
              if(arr2[2].length == 1)
                  arr2[2]="0" + arr2[2];
              var d1 = arr1[0] + arr1[1] + arr1[2];
              var d2 = arr2[0] + arr2[1] + arr2[2];
              if(parseInt(d1,10) > parseInt(d2,10)){
                 return true;
              }else{
              return false;
              }
          }

          /***檢查是否為電子郵箱***/
          function checkEmail(ele)
          {
          if(ele.value.length>0&&!isEmail(ele.value))
          {
          //alert("請輸入有效郵箱");
           //addMsg(ele, "請輸入有效郵箱");
           msg = formcheck_delNull(msg) + "請輸入有效郵箱";
          }

          }


          /***檢查單選按鈕是否需要選擇***/
          function checkRadio(ele)
          {
          //var rads = document.getElementsByName(ele.name);
          //eval("var rads="+name+"."+ele.name);
          eval("var rads=document.all."+ele.name);
          var selectCount=0;
          for(var i=0;i<rads.length;i++)
          {
          if(rads[i].checked)
          {
          selectCount++;
          }
          }

          if(ele.mustSelect!=null && ele.mustSelect)
          {
          if(selectCount==0)
          {
          //alert("請選擇"+convertNullToSpace(ele.objName));
           //addMsg(ele, "請選擇"+convertNullToSpace(ele.objName));
           msg = formcheck_delNull(msg) + "請選擇"+convertNullToSpace(ele.objName);
          }

          }
          }

          /***檢查復選按鈕是否需要選擇***/
          function checkBox(ele)
          {
          //var rads = document.getElementsByName(ele.name);
          //alert(ele.name);
          //eval("var chks="+name+"."+ele.name);
          eval("var chks=document.all."+ele.name);
          var selectCount=0;
          for(var i=0;i<chks.length;i++)
          {
          if(chks[i].checked)
          {
          selectCount++;
          }
          }
          if(ele.minSelect!=null && !isNaN(ele.minSelect))
          {
          if(selectCount<parseInt(ele.minSelect))
          {
          //alert(convertNullToSpace(ele.objName)+"至少選擇"+ele.minSelect+"項");
           //addMsg(ele, convertNullToSpace(ele.objName)+"至少選擇"+ele.minSelect+"項");
           msg = formcheck_delNull(msg) + convertNullToSpace(ele.objName)+"至少選擇"+ele.minSelect+"項";
          }
          }
          if(ele.maxSelect!=null && !isNaN(ele.maxSelect))
          {
          if(selectCount>parseInt(ele.maxSelect))
          {
          //alert(convertNullToSpace(ele.objName)+"至多選擇"+ele.maxSelect+"項");
           //addMsg(ele, convertNullToSpace(ele.objName)+"至多選擇"+ele.maxSelect+"項");
           msg = formcheck_delNull(msg) + convertNullToSpace(ele.objName)+"至多選擇"+ele.maxSelect+"項";
          }
          }

          }

          /***檢查下拉列表框是否需要選擇***/
          function checkSelect(ele)
          {
          //var rads = document.getElementsByName(ele.name);
          if(ele.mustSelect!=null && ele.mustSelect)
          {
          //if(ele.selectedIndex==0)
          if(ele.value=="")
          {
          //alert("請選擇"+convertNullToSpace(ele.objName));
           //addMsg(ele, "請選擇"+convertNullToSpace(ele.objName));
           msg = formcheck_delNull(msg) + "請選擇"+convertNullToSpace(ele.objName);
          }
          }

          }


          /***檢查列表框的選擇項數***/
          function checkList(ele)
          {
          //var rads = document.getElementsByName(ele.name);
          var selectCount=0;
          for(var i=0;i<ele.options.length;i++)
          {
          if(ele.options[i].selected)
          {
          selectCount++;
          }
          }
          //alert(selectCount);
          if(ele.minSelect!=null && !isNaN(ele.minSelect))
          {
          if(selectCount<parseInt(ele.minSelect))
          {
          //alert(convertNullToSpace(ele.objName)+"至少選擇"+ele.minSelect+"項");
           //addMsg(ele, convertNullToSpace(ele.objName)+"至少選擇"+ele.minSelect+"項");
           msg = formcheck_delNull(msg) + convertNullToSpace(ele.objName)+"至少選擇"+ele.minSelect+"項";
          }
          }
          if(ele.maxSelect!=null && !isNaN(ele.maxSelect))
          {
          if(selectCount>parseInt(ele.maxSelect))
          {
          //alert(convertNullToSpace(ele.objName)+"至多選擇"+ele.maxSelect+"項");
           msg = formcheck_delNull(msg) + convertNullToSpace(ele.objName)+"至多選擇"+ele.maxSelect+"項";
          }
          }

          }


          /***判斷是否為整數***/
          function isInt(s)
          {
          var patrn=/^[-,+]{0,1}[0-9]{0,}$/;
          if (!patrn.exec(s))
          return false;
          return true;
          }
          /***判斷是否為數字***/
          function isNumber(s)
          {
          var patrn=/^[-,+]{0,1}[0-9]{0,}[.]{0,1}[0-9]{0,}$/;
          if (!patrn.exec(s))
          return false;
          return true;
          }
          /***判斷是否為日期***/
          function isDate(str)
          {
          //var str = ele.value;
          //var year, month, day;
          var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
          if(r==null)
          {
          return false;
          }
          var d= new Date(r[1], r[3]-1, r[4]);
          /*year = r[1];
          month = r[3];
          day = r[4];*/
          if(!(d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]))
          {
          return false;
          }
          /*if (parseInt(r[3], 10) < 10) month = "0" + parseInt(month, 10);
          if (parseInt(r[4], 10) < 10) day = "0" + parseInt(day, 10);
          if (parseInt(r[3], 10) < 10 || parseInt(r[4], 10) < 10) ele.value = year + "-" + month + "-" + day;*/
          return true;
          }
          /***判斷是否為年份***/
          function isYear(s)
          {
          var patrn=/^[-,+]{0,1}[0-9]{0,}[.]{0,1}[0-9]{0,}$/;
          if (!patrn.exec(s) || s.length != 4) {
           //alert("11");
           return false;
          } else {
           //alert("22");
           return true;
          }
          }
          /***判斷是否為郵箱***/
          function isEmail(str)
          {
          if(str.match(/[\w-]+@{1}[\w-]+\.{1}\w{2,4}(\.{0,1}\w{2}){0,1}/ig)!=str)
          return false;
          else
          return true;
          }
          /***將NULL轉化為空格,用于顯示對象名稱***/
          function convertNullToSpace(paramValue)
          {
          if(paramValue==null)
          return "";
          else
          return paramValue;
          }
          /***檢查小數位數***/
          function checkDecimal(num,decimalLen)
          {
          var len = decimalLen*1+1;
          if(num.indexOf('.')>0)
          {
          num=num.substr(num.indexOf('.')+1,num.length-1);
          if ((num.length)<len)
          {
          return true;
          }
          else
          {
          return false;
          }
          }
          return true;
          }
          /***去除空格***/
          function trim(str)
          {
          if (str.length > 0)
          {
          while ((str.substring(0,1) == " ") && (str.length > 0))
          {
          str = str.substring(1,str.length);
          }
          while (str.substring(str.length-1,str.length) == " ")
          {
          str = str.substring(0,str.length-1);
          }
          }
          return str;
          }

          /********************************************************************
          用戶身份證進行初校驗
          實現功能:
          1、15位的月校驗,日校驗,性別校驗(15位下的年不需要進行校驗)
          2、18位的年校驗,月校驗,日校驗,性別校驗,末位國家校驗碼校驗
          3、選擇性的校驗身份證是否和資料中性別匹配,參數中的性別留空,即不校驗
          4、選擇性的校驗身份證是否和資料中的出生年月匹配,參數中的生日留空,即不校驗
          ************************************************************************/

          function CheckIdCard(CardNo,Sex,Birthday){
          //性別 1:男 0:女
          //生日 19811010
          if ((CardNo == "")||(!(isNumber(CardNo))&&(CardNo.length == 15))||(!(isNumber(CardNo.substr(0,17)))&&(CardNo.length == 18))||((CardNo.length != 15)&&(CardNo.length != 18)))
          {
              //alert("您的身份證號碼輸入有誤,必需是15數字或18位,請重新檢查并輸入!");
              //return false;
              msg = formcheck_delNull(msg) + "您的身份證號碼輸入有誤,必需是15數字或18位,請重新檢查并輸入!";
          }
          else if (CardNo.length == 15)
          {
            if(CardNo.substr(8,2)>12||CardNo.substr(8,2)<1)
            {
              //alert("您身份證的出生“月”輸入有誤,請重新檢查并輸入!");
              //return false;
              msg = formcheck_delNull(msg) + "您身份證的出生“月”輸入有誤,請重新檢查并輸入!";
            }
            if(CardNo.substr(10,2)>31||CardNo.substr(10,2)<1)
            {
              //alert("您身份證的出生“日”輸入有誤,請重新檢查并輸入!");
              //return false;
              msg = formcheck_delNull(msg) + "您身份證的出生“日”輸入有誤,請重新檢查并輸入!";
            }
            if(Birthday!=""&&("19" + CardNo.substr(6,6))!=Birthday)
            {
              //alert("您身份證的生日和資料里的生日不符,請重新檢查并輸入!");
              //return false;
              msg = formcheck_delNull(msg) + "您身份證的生日和資料里的生日不符,請重新檢查并輸入!";
            }

            //alert(Sex+"14="+CardNo.charAt(14)%2);
            if(Sex=="男"&&CardNo.charAt(14)%2!=1)
            {
              //alert("您身份證的性別和資料里的性別不符,請重新檢查并輸入!");
              //return false;
              msg = formcheck_delNull(msg) + "您身份證的性別和資料里的性別不符,請重新檢查并輸入!";
            }
            if(Sex=="女"&&CardNo.charAt(14)%2!=0)
            {
              //alert("您身份證的性別和資料里的性別不符,請重新檢查并輸入!");
              //return false;
              msg = formcheck_delNull(msg) + "您身份證的性別和資料里的性別不符,請重新檢查并輸入!";
            }
            //return true;
          }
          else if (CardNo.length == 18)
          {
            if(CardNo.substr(6,4)<1900||CardNo.substr(6,4)>2100)
            {
              //alert("您身份證的出生“年”輸入有誤,請重新檢查并輸入!");
              //return false;
              msg = formcheck_delNull(msg) + "您身份證的出生“年”輸入有誤,請重新檢查并輸入!";
            }
            if(CardNo.substr(10,2)>12||CardNo.substr(10,2)<1)
            {
              //alert("您身份證的出生“月”輸入有誤,請重新檢查并輸入!");
              //return false;
              msg = formcheck_delNull(msg) + "您身份證的出生“月”輸入有誤,請重新檢查并輸入!";
            }
            if(CardNo.substr(12,2)>31||CardNo.substr(12,2)<1)
            {
              //alert("您身份證的出生“日”輸入有誤,請重新檢查并輸入!");
              //return false;
              msg = formcheck_delNull(msg) + "您身份證的出生“日”輸入有誤,請重新檢查并輸入!";
            }
            if(Birthday!=""&&CardNo.substr(6,8)!=Birthday)
            {
              //alert("您身份證的生日和資料里的生日不符,請重新檢查并輸入!");
              //return false;
              msg = formcheck_delNull(msg) + "您身份證的生日和資料里的生日不符,請重新檢查并輸入!";
            }
            //alert(Sex+"18="+CardNo.substr(16));
            if(Sex=="男"&&CardNo.charAt(16)%2!=1)//男性校驗
            {
              //alert("您身份證的性別和資料里的性別不符,請重新檢查并輸入!");
              //return false;
              msg = formcheck_delNull(msg) + "您身份證的性別和資料里的性別不符,請重新檢查并輸入!";
            }
            if(Sex=="女"&&CardNo.charAt(16)%2!=0)//女性校驗
            {
              //alert("您身份證的性別和資料里的性別不符,請重新檢查并輸入!");
              //return false;
              msg = formcheck_delNull(msg) + "您身份證的性別和資料里的性別不符,請重新檢查并輸入!";
            }
            var Wi = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
            var Ai = new Array('1','0','X','9','8','7','6','5','4','3','2');
           
            if (CardNo.charAt(17) == 'x')
            {
              CardNo = CardNo.replace("x","X");   
            }
           
            var checkDigit = CardNo.charAt(17); 
            var cardNoSum = 0;
           
            for (var i=0; i<CardNo.length-1; i++)
            {
              cardNoSum = cardNoSum + CardNo.charAt(i)*Wi[i];
            }
           
            var seq = cardNoSum%11;
            var getCheckDigit = Ai[seq];
           
            if (checkDigit != getCheckDigit)
            {
              //alert("您的身份證號碼校驗失敗,請重新檢查并輸入!");
              //return false;
              msg = formcheck_delNull(msg) + "您的身份證號碼校驗失敗,請重新檢查并輸入!";
            }
            //return true;
          }
          /*else
          {
              return true;
          }*/
          }

          function isNumber(str)
          {
          if(str==null || str=="") return false ;
          for(var i=0 ;i<str.length ;i++)
          {
          var cI = str.charAt(i) ;
          if(cI<'0' || cI>'9') return false ;
          }
          return true;
          }

          function strrq10to8(str)
          {
            var strs = str.split("-");
            var str  = strs[0]+strs[1]+strs[2];
            return str;
          }

          posted @ 2007-07-16 08:55 小鳥 閱讀(573) | 評論 (0)編輯 收藏

          <2007年7月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 高陵县| 安泽县| 黔江区| 昆明市| 西贡区| 揭阳市| 观塘区| 九寨沟县| 开阳县| 牡丹江市| 贵定县| 伊通| 沙雅县| 山东| 辽宁省| 岳阳市| 临洮县| 荥经县| 阳春市| 进贤县| 丽水市| 蒲江县| 赣榆县| 彩票| 华宁县| 宁津县| 雅安市| 怀来县| 册亨县| 繁峙县| 呼玛县| 霍城县| 梧州市| 巴楚县| 巧家县| 南和县| 萝北县| 曲阜市| 云安县| 冕宁县| 鹤庆县|