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事件觸發(fā),由于表單的onSubmit事件只能由提交按鈕觸發(fā),
          所以如果要用函數(shù)提交表單form1.submit(),則必須同時執(zhí)行form1.onSubmit()。

          類型定義:

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

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

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

          十、字符型(char)
          定義:
          valueType="char"
          屬性:
          objName 對象名稱(字符串)
          mustInput 必輸項(true/false)
          charsLen 字符串長度(數(shù)字)
          舉例:
          <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">
          備注:
          日期現(xiàn)在只能校驗的格式為(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 最小選擇數(shù)(數(shù)字)
          maxSelect 最大選擇數(shù)(數(shù)字)
          舉例:
          <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 最小選擇數(shù)(數(shù)字)
          maxSelect 最大選擇數(shù)(數(shù)字)
          舉例:
          <select name="test" valueType="list" objName="愛好" minSelect="2" maxSelect="5">
          **/

          var es; //錯誤個數(shù)
          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下一個節(jié)點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; //初始化錯誤個數(shù)
          //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)
          {
          //整數(shù)
          case "int":
          checkInt(eles[i]);
          break;

          //小數(shù)
          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("請檢查數(shù)據(jù)錄入是否正確、完整。\n(欲知詳情請點擊紅色叉叉處。)");
           return false;
          } else {
           event.returnValue=true;
           return true;
          }
          }

          /***檢查是否為整數(shù)***/
          function checkInt(ele)
          {
          if(!isInt(ele.value))
          {
          //alert("您輸入的"+ convertNullToSpace(ele.objName)+"值應為整數(shù)");
           //addMsg(ele, "您輸入的"+ convertNullToSpace(ele.objName)+"值應為整數(shù)");
           //msg = msg + "您輸入的"+ convertNullToSpace(ele.objName)+"值應為整數(shù)";
           msg = formcheck_delNull(msg) + "您輸入的"+ convertNullToSpace(ele.objName)+"值應為整數(shù)";
          }
          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;
          }
          }
          }

          /***檢查是否為小數(shù)***/
          function checkFloat(ele)
          {
          if(isNaN(ele.value))
          {
          //alert("您輸入的"+ convertNullToSpace(ele.objName)+"值應為整數(shù)或小數(shù)");
           //addMsg(ele, "您輸入的"+ convertNullToSpace(ele.objName)+"值應為整數(shù)或小數(shù)");
           //msg = msg + "您輸入的"+ convertNullToSpace(ele.objName)+"值應為整數(shù)或小數(shù)";
           msg = formcheck_delNull(msg) + "您輸入的"+ convertNullToSpace(ele.objName)+"值應為整數(shù)或小數(shù)";
          }
          else
          {
          if(ele.decimalLen!=null && !checkDecimal(ele.value,ele.decimalLen))
          {
          //alert("您輸入的"+convertNullToSpace(ele.objName)+"值小數(shù)位最多為"+ele.decimalLen);
           //addMsg(ele, "您輸入的"+convertNullToSpace(ele.objName)+"值小數(shù)位最多為"+ele.decimalLen);
           //msg = msg + "您輸入的"+convertNullToSpace(ele.objName)+"值小數(shù)位最多為"+ele.decimalLen;
           msg = formcheck_delNull(msg) + "您輸入的"+convertNullToSpace(ele.objName)+"值小數(shù)位最多為"+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;
          }
          //字母數(shù)字
          var patrn=/^[a-zA-Z0-9]+[a-zA-Z0-9]$/;
          if (value.length>0&&!patrn.exec(value)){
           //alert("您輸入的"+convertNullToSpace(ele.objName)+"字符應為字母或數(shù)字");
           msg = formcheck_delNull(msg) + "您輸入的"+convertNullToSpace(ele.objName)+"字符應為字母或數(shù)字";
          }

          }
          }

          /***檢查是否為年份格式***/
          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);
          }
          }

          }


          /***檢查列表框的選擇項數(shù)***/
          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+"項";
          }
          }

          }


          /***判斷是否為整數(shù)***/
          function isInt(s)
          {
          var patrn=/^[-,+]{0,1}[0-9]{0,}$/;
          if (!patrn.exec(s))
          return false;
          return true;
          }
          /***判斷是否為數(shù)字***/
          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;
          }
          /***檢查小數(shù)位數(shù)***/
          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;
          }

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

          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數(shù)字或18位,請重新檢查并輸入!");
              //return false;
              msg = formcheck_delNull(msg) + "您的身份證號碼輸入有誤,必需是15數(shù)字或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月5日

          javascript小經驗

          獲取select選定的元素
          var   Obj   =   document.getElementById("selectID"); 
          Obj.option[Obj.selectedIndex].value
          如何用Javascript的內置函數(shù)把以逗號分開的字符串轉化成一個數(shù)組。然后輸出數(shù)組。 
            <script> 
            str="a,b,c" 
            arr=str.split(","); 
            for(i=0;i<arr.length;i++)alert(i+":"+arr[i]) 
            </script> 
          如何用自己寫的函數(shù)把以逗號分開的字符串轉化成一個數(shù)組。然后輸出數(shù)組。 
            <script> 
            str="o,m,n" 
            arr=split2(str); 
            for(i=0;i<arr.length;i++)alert(i+":"+arr[i]) 
            function   split2(tmp){ 
            return   tmp.match(/([^,]+)/g) 
            } 
            </script> 

          Example:
          <html>
          <head>
              <title></title>

              <script language="javascript">       
                  function Add(objA,objB)
                  {
                      var tem=new Array();
                      with(objA)
                      for(i=length-1;i>=0;i--)
                          if(options[i].selected){tem[tem.length]=new Option(options[i].text,options[i].value);}
                     
                      if(objA.selectedIndex>-1)
                      {
                          for(i=0;i<objB.length;i++) tem[tem.length]=objB.options[i];
                          with(objB)
                          {
                              length=0;
                              tem.sort(sortArr);
                              for(i=0;i<tem.length;i++) options[length]=new Option(tem[i].text,tem[i].value)
                          }
                      }   
                  }
                 
                  function sortArr(a,b)
                  {
                      if(a.text>b.text)return 1;
                      if(a.text<b.text)return -1;
                      return 0;
                  }
                  //   
                 
                  //
                  function up(obj)
                  {       
                      var objO = new Option(obj.options[obj.selectedIndex].text,obj.options[obj.selectedIndex].value);   
                     
                      var selectedIndex = obj.selectedIndex;
                      if(selectedIndex>0)
                      {               
                          obj.options[selectedIndex].text = obj.options[selectedIndex-1].text;
                          obj.options[selectedIndex].value = obj.options[selectedIndex-1].value;
                         
                          obj.options[selectedIndex-1].text = objO.text;
                          obj.options[selectedIndex-1].value = objO.value;
                         
                          obj.selectedIndex = selectedIndex-1;       
                      }
                  }
                  //
                 
                  //
                  function down(obj)
                  {       
                      var objO = new Option(obj.options[obj.selectedIndex].text,obj.options[obj.selectedIndex].value);   
                     
                      var selectedIndex = obj.selectedIndex;
                      if(selectedIndex<obj.options.length-1)
                      {               
                          obj.options[selectedIndex].text = obj.options[selectedIndex+1].text;
                          obj.options[selectedIndex].value = obj.options[selectedIndex+1].value;
                         
                          obj.options[selectedIndex+1].text = objO.text;
                          obj.options[selectedIndex+1].value = objO.value;
                         
                          obj.selectedIndex = selectedIndex+1;
                      }
                  }
                  //
                 
                  // 雙擊時添加到b
                  function dba(objA,objB)
                  {           
                      var objO=new Option(objA.options[objA.selectedIndex].text,objA.options[objA.selectedIndex].value)
                      objB.add(objO);
                  }
                  //
                  // 雙擊時刪除b
                  function dbb(obj)
                  {
                      obj.removeChild(obj.options[obj.selectedIndex]);
                  }
                  //
                 
                  // 刪除b中選中的項
                  function del(obj)
                  {       
                      for(var i=obj.options.length-1;i>=0;i--)
                      {
                          if(obj.options[i].selected)
                          {
                              obj.removeChild(obj.options[i]);
                          }
                      }           
                  }
                  //
                 
                  //
                  function getvalue(obj)
                  {
                      var str="";
                     
                      for(var i=0;i<obj.options.length;i++)
                      {
                          if(str.length>0)
                              str = str + "," + obj.options[i].value;
                          else
                              str = obj.options[i].value;
                      }
                     
                      document.getElementById("selectValue").innerText = str;
                  }
                  //
              </script>

          </head>
          <body bgcolor="#CCCCCC">
              <table cellspacing="0" cellpadding="0" width="448" border="0">
                  <tr>
                      <td width="45%" align="center">
                          <select style="width: 155px" multiple size="15" name="a" ondblclick="dba(this,document.getElementById('b'))">
                              <option value="av1" title="av1">at1</option>
                              <option value="av2" title="av2" style="background-color:#999999">at2</option>
                              <option value="av3" title="av3">at3</option>
                              <option value="av4" title="av4">at4</option>
                              <option value="av5" title="av5">at5</option>
                              <option value="av6" title="av6">at6</option>
                              <option value="av7" title="av7">at7</option>
                          </select>
                      </td>
                      <td>
                          <input onClick="Add(document.getElementById('a'),document.getElementById('b'))" type="button"
                              value="&gt;&gt;" style="width: 40px">
                          <br>
                          <input onClick="del(document.getElementById('b'))" type="button" value="Del" style="width: 40px">
                          <br>
                          <input onClick="up(document.getElementById('b'))" type="button" value="b↑" style="width: 40px">
                          <br>
                          <input onClick="down(document.getElementById('b'))" type="button" value="b↓" style="width: 40px">
                      </td>
                      <td width="45%" align="center">
                          <select style="width: 155px" multiple size="15" name="b" ondblclick="dbb(this)">
                              <option value="bv1">bt1</option>
                              <option value="bv2">bt2</option>
                              <option value="bv3">bt3</option>
                              <option value="bv4">bt4</option>
                              <option value="bv5">bt5</option>
                              <option value="bv6">bt6</option>
                              <option value="bv7">bt7</option>
                              <option value="bv8">bt8</option>
                          </select>
                      </td>
                  </tr>
                  <tr>
                      <td colspan="3" align="center">
                          <input type="button" name="button1" value="獲得右邊select值" onClick="getvalue(document.getElementById('b'))"></td>
                  </tr>
                  <tr>
                      <td colspan="3" align="center">
                          <div id="selectValue">
                          </div>
                      </td>
                  </tr>
              </table>
          </body>
          </html>

          posted @ 2007-07-05 08:32 小鳥 閱讀(453) | 評論 (0)編輯 收藏

          2007年7月4日

          網址收集

          ========css========
          www.52css.com

          ========html========

          ========javascript=====
          select----->
          http://www.cnblogs.com/kensonwang/archive/2007/06/28/798984.html
          ========ajax=========
          http://www.ibm.com/developerworks/cn/xml/x-ajaxxml2/?S_TACT=105AGX52&S_CMP=techcsdn

          http://www.blueidea.com/tech/web/2006/4032.asp
          ========struts========

          ========hibernate======

          ========spring========

          ========tapestry=======

          posted @ 2007-07-04 18:17 小鳥 閱讀(193) | 評論 (0)編輯 收藏

          將ActionForm拼合成一條插入和更新語句

          package chs.jhsyss.form;

          import java.lang.reflect.InvocationTargetException;
          import java.lang.reflect.Method;

          import java.util.Date;

          public class Waper {

           public Waper(){
           }
           /**
            * 本方法用于將FORM對象組裝成一條INSERT語句
            * @param obj ActionForm 以及其子對象
            * @param formPath  ActionForm 以及其子對象的包路徑和名稱
            * @param tableName  所要操作的數(shù)據(jù)表
            * @return 返回相應的INSERT語句
            */
           public String insert(Object obj,String formPath,String tableName){
            long start  = new Date().getTime();
            String sqlToVar = "insert into "+tableName+"(";
            String sqlToValues = " ) values(";
            Class $fj = null;
            try {
             $fj = Class.forName(formPath);//example "chs.jhsyss.form.FJhsyss"
            } catch (ClassNotFoundException e1) {
             // TODO Auto-generated catch block
             e1.printStackTrace();
            }
            Class clazz = obj.getClass();
            Method[] method = clazz.getDeclaredMethods();
            for(int i=0;i<method.length;i++){
             String methodName = method[i].getName();
             if(methodName.indexOf("get")<0){
              continue;// 除去非get方法
             }else{
             try {
              Method m = $fj.getMethod(methodName, null);//根據(jù)指定的方法名取得相應方法
              String $methodName = methodName.toLowerCase().substring(3,methodName.length());//裁剪getXXX方

          法取得相應變量名稱
              try {
               String result = (String) m.invoke(obj, null);//調用方法,前一個參數(shù)代表傳進來的FORM對

          象,后一個為傳遞給方法的參數(shù);返回結果為原來方法相應的返回值
               sqlToVar+=$methodName+",";
               sqlToValues+="'"+result+"',";
               
              } catch (IllegalArgumentException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
              } catch (IllegalAccessException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
              } catch (InvocationTargetException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
              }
             } catch (SecurityException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
             } catch (NoSuchMethodException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
             }
             }
            }
            sqlToVar=sqlToVar.substring(0,sqlToVar.length()-1);
            sqlToValues=sqlToValues.substring(0,sqlToValues.length()-1)+")";
            long end = new Date().getTime();
            System.out.println("插入操作花費總時間->"+(end-start)+"<-ms");
            System.out.println(sqlToVar+sqlToValues);
            return sqlToVar+sqlToValues;
            
           }
           public String update(Object obj,String formPath,String xh,String tableName){
            long start = new Date().getTime();
            String sqlToVar = "update "+tableName+" set ";
            Class $clazz = null;
            try{
             $clazz = Class.forName(formPath);
            }catch(ClassNotFoundException e){
             e.printStackTrace();
            }
            Class clazz = obj.getClass();
            Method[] method = clazz.getDeclaredMethods();
            for(int i = 0;i<method.length;i++){
             String methodName = method[i].getName();
             if(methodName.indexOf("get")<0){
              continue;// 除去非get方法
             }else{
              try {
               Method m = $clazz.getMethod(methodName, null);
               String $methodName = methodName.toLowerCase().substring(3,methodName.length());//裁剪

          getXXX方法取得相應變量名稱
               String result = (String) m.invoke(obj, null);
               sqlToVar+=$methodName+"='"+result+"',";
               
               
              } catch (SecurityException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
              } catch (NoSuchMethodException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
              }//根據(jù)指定的方法名取得相應方法
              catch (IllegalArgumentException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
              } catch (IllegalAccessException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
              } catch (InvocationTargetException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
              }
             }
            }
            sqlToVar=sqlToVar.substring(0,sqlToVar.length()-1)+" where xh="+xh;
            long end = new Date().getTime();
            System.out.println("更性操作花費總時間->"+(end-start)+"<-ms");
            System.out.println("SQL->"+sqlToVar);
            return sqlToVar;
           }
           public static void main(String[] args){
            FJhsyss fj = new FJhsyss();
            fj.setBcrq("20050202");
            fj.setDwfzr("fafa");
            fj.setGnjygr("fafa");
            fj.setGnjyls("2000");
            fj.setXh("seq_hqjc_jhsyss,");
            String seq = "seq_hqjc_jhsyss.nextval";
            String path = "chs.jhsyss.form.FJhsyss"; 
            Waper r = new Waper();
            r.insert(fj,path,"MYTABLE");
            r.update(fj, path, "1", "mytable");
           }
          }

          posted @ 2007-07-04 18:13 小鳥 閱讀(251) | 評論 (0)編輯 收藏

          2007年4月30日

          BeanWaper

          package ff;

          import java.lang.reflect.Field;
          import java.sql.Date;
          import java.sql.SQLException;
          import java.util.HashMap;
          import java.util.Iterator;
          import java.util.Map;
          import java.util.Set;
          import java.util.Vector;
          import java.sql.ResultSet;
          /**
           * BEAN 適用類 通過數(shù)據(jù)庫結果集包裝一個POJO,對它進行賦值
           * 適用于非使用ORM框架的軟件
           */
          public class BeanWaper {
           
           //傳入的POJO對象參數(shù)
           private Object obj;
           
           //數(shù)據(jù)庫結果集
           ResultSet result;
           
           //保存Field集合信息
           private Map fields = new HashMap();
           
           //預存儲數(shù)據(jù)類型
           private Map propertyType = new HashMap();
           
           public BeanWaper(Object user,ResultSet result){
            System.out.println("ABC");
            this.obj = user;
            this.result = result;
            //基本常用數(shù)據(jù)類型  可能不完整
            propertyType.put("int", Integer.valueOf(0));
            propertyType.put("long", Integer.valueOf(1));
            propertyType.put("String", Integer.valueOf(2));
            propertyType.put("byte", Integer.valueOf(3));
            propertyType.put("Date", Integer.valueOf(4));
            propertyType.put("double", Integer.valueOf(5));
            
            //補充 見 getDataBaseTypeValue(arg1,arg2,arg3)
            //propertyType.put("**", Integer.valueOf(6));
            //propertyType.put("**", Integer.valueOf(7));
            
           }
           
           /**
            * @see 封裝對象的字段名稱和數(shù)據(jù)類型對象,供數(shù)據(jù)庫取值時使用
            * @return
            */
           public Map getPropertyNamesAndType(){
            Field[] classFields = getFields();
            for(int flag = 0; flag < classFields.length; flag++ ){
             fields.put(getPropertyName(classFields[flag]),getPropertyType(classFields[flag]));
            }
            System.out.println("1.Fields信息:"+"\n"+fields.toString());
            return fields;
           }
           
           /**
            * @see 獲取所有字段的域
            * @return
            */
           public Field[] getFields(){
            System.out.println("2.獲取聲明了的Fields信息"+"\n"+obj.getClass().getDeclaredFields().toString());
            return obj.getClass().getDeclaredFields();
           }
           
           /**
            * @see 獲取指定字段域的數(shù)據(jù)類型
            * @param field指定字段域
            * @return
            */ 
           public String getPropertyType(Field field){
            StringSpilt spilt = new StringSpilt();
            String[] values = spilt.split(field.getType().toString(), ".");
            String propertyType = spilt.getLastString(values);
            System.out.println("3.獲取屬性類型信息:"+"\n"+propertyType);
            return propertyType;
           }
           
           /**
            * @see 通過傳入屬性數(shù)據(jù)類型,名稱,結果集,通過匹配從結果集中取出相應數(shù)據(jù)
            * @param type
            * @param name
            * @param result
            * @return
            * @throws NumberFormatException
            * @throws SQLException
            */
           public Object getDataBaseTypeValue(String type,String name,ResultSet result) throws NumberFormatException, SQLException{
            Object obj = null;
            int flag = ((Integer)propertyType.get(type)).intValue();
            switch(flag){
            case 0 : obj = Integer.valueOf(result.getInt(name)); break;
            case 1 : obj = Long.valueOf(result.getLong(name)); break;
            case 2 : obj = String.valueOf(result.getString(name)); break;
            case 3 : obj = Byte.valueOf(result.getByte(name)); break;
            case 4 : obj = (Date)result.getDate(name); break;
            case 5 : obj = Double.valueOf(result.getDouble(name)); break;
            //補充
            //case 6 : obj = String.valueOf(result.getString(name)); break;
            }
            System.out.println("4.打印獲取的數(shù)據(jù)庫值信息:"+"\n"+obj);
            return obj;
           }
           
           /**
            * @see 設置指定的BEAN類的值
            * @param clazz
            * @param value
            * @param field
            */
           public void setValue(Object clazz, Object value,Field field){
            try {
             field.set(clazz, value);
            } catch (IllegalArgumentException e) {
             e.printStackTrace();
             System.out.println("5.打印異常信息如下:"+"\n"+e);
            } catch (IllegalAccessException e) {
             e.printStackTrace();
             System.out.println("6.打印異常信息如下:"+"\n"+e);
            }
           }
           
           /**
            * @see 包裝指定的BEAN類,結果為傳入的BEAN將擁有設定的值
            * @param result
            * @throws NumberFormatException
            * @throws SQLException
            */
           public void waperBean(ResultSet result) throws NumberFormatException, SQLException{
            Map names_types = getPropertyNamesAndType();
            Set keys = names_types.keySet();
            Iterator ite = keys.iterator();
            while(ite.hasNext()){
             String name = (String) ite.next();
             String type = (String) names_types.get(name);
             Field field = null;
             try {
              field = obj.getClass().getDeclaredField(name);
             } catch (SecurityException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
              System.out.println("7.打印異常信息如下:"+"\n"+e);
             } catch (NoSuchFieldException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
              System.out.println("8.打印異常信息如下:"+"\n"+e);
             }
             setValue(obj,getDataBaseTypeValue(type,name,result),field);  
            } 
           }
           
           //獲取屬性名稱
           public String getPropertyName(Field field){
            return field.getName();
           }

           /**
            * 內部類  字符串分割類
            */
           public class StringSpilt {
            /**
               *
               * 分割字符串,原理:檢測字符串中的分割字符串,然后取子串
               *
               * @param original 需要分割的字符串
               *
               * @paran regex 分割字符串
               *
               * @return 分割后生成的字符串數(shù)組
               *
               */   
              public String[] split(String original,String regex)   
              {
               // 取子串的起始位置       
                  int startIndex = 0;       
                  // 將結果數(shù)據(jù)先放入Vector中       
                  Vector v = new Vector();       
                  // 返回的結果字符串數(shù)組       
                  String[] str = null;                       
                  // 存儲取子串時起始位置       
                  int index = 0;       
                  // 獲得匹配子串的位置       
                  startIndex = original.indexOf(regex);                       
                  // System.out.println("0" + startIndex);                       
                  // 如果起始字符串的位置小于字符串的長度,則證明沒有取到字符串末尾。       
                  // -1代表取到了末尾       
                  while(startIndex < original.length() && startIndex != -1)           
                  {           
                      String temp = original.substring(index,startIndex);                                  
                      // System.out.println(" " + startIndex);                                 
                      // 取子串           
                      v.addElement(temp);           
                      // 設置取子串的起始位置           
                      index = startIndex + regex.length();           
                      // 獲得匹配子串的位置           
                      startIndex = original.indexOf(regex,startIndex + regex.length());           
                  }       
                  // 取結束的子串       
                  v.addElement(original.substring(index));                    
                  // 將Vector對象轉換成數(shù)組       
                  str = new String[v.size()];       
                  for(int i=0;i<v.size();i++)           
                  {           
                      str[i] = (String)v.elementAt(i);           
                  }       
                   // 返回生成的數(shù)組       
                  return str; 
              }
             
              /**
               * 功能描述:獲取最后一個字符串
               * @author ZhouMingXing
               */
              public String getLastString(String[] values ){
               int length = values.length;
               if(length == 0){
                return null;
               }else{
                return values[length-1];
               }
              }
           }
           
           //測試用途
           public static void main(String[] args){
            MyBean user = new MyBean();  
            try {
             new BeanWaper(user,new java.sql.ResultSet()).waperBean(result);
             System.out.println("最后結果信息如下:"+"\n"+user.getId()+"  "+user.getName()+"  "+user.getNumber()+"  "+user.getMyBirthed()+"   "+user.getMyImage()+"   "+user.getPassword()+""+"");
            } catch (NumberFormatException e) {
             // TODO Auto-generated catch block
             System.out.println("9.打印異常信息如下:"+"\n"+e);
             
             e.printStackTrace();
            } catch (SQLException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
             System.out.println("10.打印異常信息如下:"+"\n"+e);
            }
           }
          }

          posted @ 2007-04-30 08:49 小鳥 閱讀(269) | 評論 (0)編輯 收藏

          僅列出標題  
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統(tǒng)計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 乐东| 北流市| 拉萨市| 南昌市| 来安县| 高阳县| 潍坊市| 洪雅县| 丁青县| 隆尧县| 博兴县| 镇坪县| 平山县| 盱眙县| 三明市| 东乌珠穆沁旗| 阿克苏市| 栾城县| 堆龙德庆县| 黎平县| 乡城县| 兴国县| 买车| 遵义县| 巴彦淖尔市| 龙江县| 镇安县| 封丘县| 南汇区| 泾源县| 浮梁县| 西畴县| 永清县| 雷州市| 高雄市| 交口县| 项城市| 屯昌县| 夏河县| 台南县| 浑源县|