自定義JavaScript函數源碼(2)

自定義JavaScript函數源碼(2)

/*
-------------------本文函數列表-------------------------
javaTrim函數 JavaTrim(str)
檢驗字符串中是否含有html字符  javaValidString(str)
檢驗字符串是否為Email格式 javaValidEmail(str)
檢查字符串中是否只含有數字和點號 javaValidNumber(str)
檢查指定form中指定item的值是否為(空/email/number) SpaceEmailNumberCheck(strFrm,strItem,nCheckType,strErrorAlertInfo)
選中/取消具有相同名字的所有復選框 CheckAll(formname,chkname,chkallname)
反選相同名稱的所有複選框 UnCheckAll(formname,chkname)
判斷是否選擇了複選框中的至少一項 CheckIsSelected(FormName,chkname)
全選頁面中的checkbox fnCheckAllCheckBox(myForm,myChecked)
提交窗體時的檢測與確認操作 DoSubmit(FormName,FormAction,chkname,Var1Name,Var1Value,Var2Name,Var2Value,Var3Name,Var3Value,DisplayStr)

設置0到5個按鈕為不可用狀態 SetDisBut(FormName,Button1Name,Button2Name,Button3Name,Button4Name,Button5Name)
禁止使用鼠標右鍵 RightKeyClick()
根據選擇的年份、月份自動改變天數下拉列表框的選擇項 YearOrMonthChange(FormName,YearName,MonthName,DayName)
比較兩個時間的大小 CompareTime(by,bm,bd,bho,bmi,ey,em,ed,eho,emi)
把選取的時間返回給時間申請對像函數 GetSelectedTime(objGetTime,TimeType)
判斷必輸項是否輸入,必選項必須選擇 GetMustInput(FormName,ObjType,ObjID,ObjName,ValueLen,HaveFocus)
獲取字符串長度(包括漢字) GetStrLen(pstr)
提交頁面,并最多給3個元素賦值 DoSearch(FormName,FormAction,Var1Name,Var1Value,Var2Name,Var2Value,Var3Name,Var3Value)
格式化數字小數點位數 FormatNumber(srcStr,nAfterDot)
設置回車鍵為Tab鍵 setHotKey()
將焦點移到objID元素上 GetFocus(objID)


-------------------本文函數列表-------------------------
*/


//============================================
//功能:去掉字符串首尾的空格,返回處理後的字符串
//============================================
function javaTrim(str){
  var i=0;
  var j;
  var len=str.length;
  
  trimstr='';
  j=len-1;
  if(j<0) return trimstr;
  flagbegin= true;
  flagend= true;
  while (flagbegin== true){
   if (str.charAt(i)==' '){
    i++;
    if(i>j) return trimstr;
    flagbegin=true;
   }
   else{
    flagbegin=false;
   }
  }
  while (flagend==true) {
   if (str.charAt(j)==' '){
    j--;flagend=true;
   }
   else{
    flagend=false;
   }
  }
  trimstr=str.substring(i,j+1);
  
  return trimstr;
 }

//================================================
//檢驗str中否含有html字符,是,返回false,否,返回true
//================================================
 function javaValidString(str)
 {
  var len;
  
  len = str.length;
  for(var i=0; i<len; i++)
  {
   if(str.charAt(i)=='<' || str.charAt(i)=='>' || str.charAt(i)=='/'' || str.charAt(i)=='/"')
   {
    return false;
   }
  }
  return true;
 }
//==================================
// 檢查E-Mail是否正確.
//注: ".@."形式也會返回true
//==================================
 function javaValidEmail(str)
 {
  var cnt1, cnt2;
  var len1;

  if(javaValidString(str)==false)
  {
   return false;
  }

  cnt1=0;
  cnt2=0;
  len1 = str.length;
  for(var i=0; i<len1; i++) {
   if(str.charAt(i)=='@')
   {
    cnt1++;
   }
   if(str.charAt(i)=='.')
   {
    cnt2++;
   }
   if(str.charAt(i)==' ')
   {
    return false;
   }
  }
  if( cnt1!=1 || cnt2<1)
  {
   return false;
  }
  return true;
 }
//==========================
//檢查str中是否只含有數字和點號,用於身份證、電話、價格等。
//===========================
 function javaValidNumber(str)
 {
  var cnt3;
  var len3;

  if(javaValidString(str)==false)
  {
   return false;
  }

  cnt3=0;
  len3 = str.length;
  for(var i=0; i<len3; i++) {
   if(str.charAt(i)>='0' && str.charAt(i)<='9' || str.charAt(i)=='.')
   {
    cnt3++;
   }
  }
  if( cnt3!=len3)
  {
   return false;
  }
  return true;
 }
//===========================
//檢查指定form中指定item的值是否為(空/email/number)
//===========================
function SpaceEmailNumberCheck(strFrm,strItem,nCheckType,strErrorAlertInfo)
{
 var eitem = eval(strFrm +'.'+ strItem);

 switch(nCheckType)
 {
  case 0: //check space
   
    if (javaTrim(eitem.value) =='')
     {
      alert(strErrorAlertInfo+'不能為空!');
      eitem.focus();
      return false ;
     }
    else
     return true;
   
  case 1: //check email
   
    if(javaValidEmail(eitem.value)) 
    return true;
    else
    {
     alert(strErrorAlertInfo+'不能為空!');
      eitem.focus();
      return false ;
    }
  
  case 2: //check number
   
   if(javaValidNumber(eitem.value)) 
    return true;
   else
    {
     alert(strErrorAlertInfo+'不能為空!');
      eitem.focus();
      return false ;
    }
   
 }
}

//=====================================
// 選中/取消具有相同名字的所有復選框;
//參數說明:
// form      :表單名稱;
// chkname   :欲選擇的復選框名字;
// chkallname:全選標志復選框名字;
///示例:
// OnClick="CheckAll(this.form,'cb','checkbox_all')"
//=====================================
function CheckAll(formname,chkname,chkallname)
{
  var objstr=eval(formname + '.' + chkname);
  if(objstr == null)
 return;
  var objlen=objstr.length;
  var e,k;
  e = eval(formname + '.'+chkname);
  k = eval(formname + '.'+chkallname);
  if(objlen==null)
  {
 objstr.checked=k.checked;
 return;
  }

  for (var i=0;i<objlen;i++)
       e[i].checked = k.checked;
}
//====================================
//反選相同名稱的所有複選框
//====================================
function UnCheckAll(formname,chkname)
{
  var objstr=eval(formname + '.' + chkname);
  if(objstr == null)
 return;
  var objlen=objstr.length;
  var e;
  e = eval(formname + '.'+chkname);
  if(objlen==null)
  {
 objstr.checked=!objstr.checked;
 return;
  }

  for (var i=0;i<objlen;i++)
       e[i].checked = !e[i].checked;
}

//================================
//判斷是否選擇了複選框中的至少一項
//================================
function CheckIsSelected(FormName,chkname)
{
  var e=eval(FormName + '.' + chkname);
  var elen=e.length;
  var selectflag=false;

  if(elen==null)//隻有一條記錄的情況;
  {
 if(!e.checked)
 {
  return false;
 }
 else
  selectflag=true;
  }
  else//有多條記錄的情況;
  {
 for(var i=0;i<elen;i++)
  if(e[i].checked)
  {
   selectflag=true;
   break;
  }

 if(!selectflag) //沒有選擇任何項;
 {
  return false;
 }
  }

}
//====================
//全選頁面中的checkbox
//====================
function fnCheckAllCheckBox(myForm,myChecked)
{
 var frm1 = eval('document.'+ myForm);
 for(var i=0;i<frm1.elements.length;i++)
 {
  //alert(frm1.elements[i].name);
  if((frm1.elements[i].type=='checkbox') && (frm1.elements[i].name != 'chkUnSelect'))
   frm1.elements[i].checked = myChecked;
 }
}
//=========================================
//功能:提交窗體時的檢測與確認操作;
//參數說明:
// FormName  :表單名稱;
// FormAction:Form提交的目標文件(''空串表示當前頁面;否則為指定文件);
// chkname   :欲選擇的復選框名字;
// Var1Name  :(Var2Name,Var3Name)Form對像1(Form對像2,Form對像3);
// Var1Value :(Var2Value,Var3Value)Form對像1的值(Form對像2的值,Form對像3的值);
// DisplayStr:確認提示信息;
//示例:
// OnClick="DoSubmit('form1','','chkTaskID','h_submit','D','','','','','真的要刪除嗎?')"
//===========================================
function DoSubmit(FormName,FormAction,chkname,Var1Name,Var1Value,Var2Name,Var2Value,Var3Name,Var3Value,DisplayStr)
{
  var e=eval(FormName+'.'+chkname);
  var elen=e.length;
  var selectflag=false;

  if(elen==null) //隻有一條記錄的情況;
  {
 if(!e.checked)
 {
  DisplayInformation('沒有選擇數據!');
  return;
 }
 else
  selectflag=true;
  }
  else //有多條記錄的情況;
  {
 for(var i=0;i<elen;i++)
  if(e[i].checked)
  {
   selectflag=true;
   break;
  }

 if(!selectflag)  //沒有選擇刪除項;
 {
  DisplayInformation('沒有選擇數據!');
  return;
 }
  }

  if(selectflag)//如果選擇則根據參數情況給對像賦值並提交窗體;
  {
 var isconfirm=window.confirm(DisplayStr);
 if(isconfirm)
 {
  if(FormAction!='')//窗口是否提交到當前頁面(為空串為提交到當前頁,否則為指定頁名稱);
   FormName.action=FormAction;
  if(Var1Name!='')
   eval(FormName+'.'+Var1Name).value=Var1Value;
  if(Var2Name!='')
   eval(FormName+'.'+Var2Name).value=Var2Value;
  if(Var3Name!='')
   eval(FormName+'.'+Var3Name).value=Var3Value;

  eval(FormName + '.submit()');
 }
  }
}

//=================================
//功能:設置0到5個按鈕為不可用狀態
//示例:
// OnLoad="SetDisBut('','b_12','','','','')"
//==================================
function SetDisBut(FormName,Button1Name,Button2Name,Button3Name,Button4Name,Button5Name)
{
 var v1;
 var SPFormName=FormName;
 if (FormName=='')
  SPFormName='form1';

 if (Button1Name!='')
 {
  v1=eval(SPFormName + "." + Button1Name);
  v1.disabled=true;
 }
 if (Button2Name!='')
 {
  v1=eval(SPFormName + "." + Button2Name);
  v1.disabled=true;
 }
 if (Button3Name!='')
 {
  v1=eval(SPFormName + "." + Button3Name);
  v1.disabled=true;
 }
 if (Button4Name!='')
 {
  v1=eval(SPFormName + "." + Button4Name);
  v1.disabled=true;
 }
 if (Button5Name!='')
 {
  v1=eval(SPFormName + "." + Button5Name);
  v1.disabled=true;
 }
}

//=========================================
//功能:禁止使用鼠標右鍵
//示例:
// OnMouseDown="RightKeyClick()"
//=========================================
function RightKeyClick()
{
 if (event.button==2)
 {
  window.alert ('對不起,禁止使用此功能!');
 }
}

//==========================================
//功能:根據選擇的年份、月份自動改變天數下拉列表框的選擇項;
//參數說明:
// FormName:Form名稱;
// YearName:年份下拉列表框名稱;
// MonthName:月份下拉列表框名稱;
// DayName:天數下拉列表框名稱;
//示例:
// OnChange="YearOrMonthChange('form1','by','bm','bd')"
//============================================
function YearOrMonthChange(FormName,YearName,MonthName,DayName)
{
 var CurrentMonthDays;
 var bYear;
 var bMonth;
 var YearNameValue=eval(FormName + '.' + YearName);
 var MonthNameValue=eval(FormName + '.' + MonthName);
 var DayNameValue=eval(FormName + '.' + DayName);
 var bDay;
 bYear=parseInt(YearNameValue.options[YearNameValue.selectedIndex].value);
 bMonth=parseInt(MonthNameValue.options[MonthNameValue.selectedIndex].value);
 bDay=parseInt(DayNameValue.options[DayNameValue.selectedIndex].value);

 //alert ('年份:' + YearNameValue.options[YearNameValue.selectedIndex].value);
 //alert ('月份:' + bMonth);

 switch(bMonth){
 case 1:
  CurrentMonthDays=31;
  break;
 case 3:
  CurrentMonthDays=31;
  break;
 case 5:
  CurrentMonthDays=31;
  break;
 case 7:
  CurrentMonthDays=31;
  break;
 case 8:
  CurrentMonthDays=31;
  break;
 case 10:
  CurrentMonthDays=31;
  break;
 case 12:
  CurrentMonthDays=31;
  break;

 case 4:
  CurrentMonthDays=30;
  break;
 case 6:
  CurrentMonthDays=30;
  break;
 case 9:
  CurrentMonthDays=30;
  break;
 case 11:
  CurrentMonthDays=30;
  break;

 case 2:
  if (bYear%4==0 && bYear%100!=0 || bYear%400==0)
   CurrentMonthDays=29
  else
   CurrentMonthDays=28;
  break;
 default:
  CurrentMonthDays=100;
  break;
 }

 //alert('日數:' + CurrentMonthDays);
 DayNameValue.length=0;
 for(var i=1;i<=CurrentMonthDays;i++)
 {
  DayNameValue.options[i-1]=new Option(i);
  DayNameValue.options[i-1].value=i;
  DayNameValue.options[i-1].text='' + i;
  if(i==bDay)
   DayNameValue.options[i-1].selected=true;
 }

}

//=============比較兩個時間的大小===================================================================
//功能
//    比較兩個時間(以年、月、日、時、分)的大小;
//參數說明
//        by:第一時間中年;
//        bm:第一時間中月;
//        bd:第一時間中日;
//        bho:第一時間中時;
//        bmi:第一時間中分;
//
//        ey:第二時間中年;
//        em:第二時間中月;
//        ed:第二時間中日;
//        eho:第二時間中時;
//        emi:第二時間中分;
//
//返回值
//    Time1>=Time2 返回FALSE;
//    Time1<Time2 返回TRUE;
//==================================================================================================
function CompareTime(by,bm,bd,bho,bmi,ey,em,ed,eho,emi)
{
 var Time1,Time2;
 tbm=(''+bm).length==1?'0'+bm:''+bm;
 tbd=(''+bd).length==1?'0'+bd:''+bd;
 tbho=(''+bho).length==1?'0'+bho:''+bho;
 tbmi=(''+bmi).length==1?'0'+bmi:''+bmi;
 Time1=by+tbm+tbd+tbho+tbmi;

 tem=(''+em).length==1?'0'+em:''+em;
 ted=(''+ed).length==1?'0'+ed:''+ed;
 teho=(''+eho).length==1?'0'+eho:''+eho;
 temi=(''+emi).length==1?'0'+emi:''+emi;
 Time2=ey+tem+ted+teho+temi;

 return Time1>=Time2?false:true;
}

 

//==============把選取的時間返回給時間申請對像函數=======================================================
//功能:
//         在彈出的時間選取窗體中選取時間後,賦值給在SelectTime函數參數中傳遞的需要值的時間對像;
//參數說明:
//        objGetTime:取得時間的對像名稱;
//    TimeType  :時間類型(DATE表示隻要日期,TIME表示隻要時間,DATETIME表示既有日期又有時間);
//返回值:
//        無;
//示例:
// OnClick="SelectTime('BeginTime','DateTime')"
//備注:
//  string.toUpperCase() 將字符串轉換成大寫;
//  string.toLowerCase() 將字符串轉換成小寫;
//======================================================================================================
function GetSelectedTime(objGetTime,TimeType)
{
 var SelectedTime,PartDate,PartTime;
 objGetTime=eval('window.opener.form1.' + objGetTime);

 PartDate=frm.by.value + '-' + frm.bm.value + '-' + frm.bd.value;
 PartTime=frm.bho.value + ':' + frm.bmi.value + ':00';

 switch(TimeType.toUpperCase())
 {
 case "DATE":
  SelectedTime=PartDate;
  break;
 case "TIME":
  SelectedTime=PartTime;
  break;
 case "DATETIME":
  SelectedTime=PartDate + ' ' + PartTime;
  break;
 default: //同DATETIME,所以case "DATETIME"分支可以不要;
  SelectedTime=PartDate + ' ' + PartTime;
 }
 objGetTime.value=SelectedTime;
 self.close();
}

//==============判斷必輸項是否輸入,必選項必須選擇===========================================
//功能:
//         在編輯狀態下,通常要判斷某對像的值是否輸入(並判斷是否超出指定長度)、
//          是否為數字(並判斷是否超出指定長度、還可包括其它哪些字符);
//參數說明:
//    FormName [string]:窗口名稱;
//        objID  [string]:欲檢測對像的name;
//    ObjName [string]:欲檢測對像的中文名稱;
//    ObjType [string]:對像是文本類或下拉選擇類,如果是文本類可為"",如果是下拉選擇類為"Select"
//    ValueLen [ int  ]:對像數據最大長度;如果是0則表示不判斷其長度;
//    HaveFocus [boolean]:是否讓當前對像獲得焦點;
//返回值:
//        Boolean :TRUE/FALSE;
//示例:
// OnClick="GetMustInput('Form1','Select','Title','文件標題',50)"
//======================================================================================================
function GetMustInput(FormName,ObjType,ObjID,ObjName,ValueLen,HaveFocus)
{
 var ObjCheck;
 ObjCheck=eval(FormName + '.' + ObjID);

 if (ObjType == 'Select')
  if (ObjCheck.options[ObjCheck.selectedIndex].value=='')
  {
   window.alert('錯誤提示/n================================================/n/n[對像名稱]:     ' + ObjName + '/n/n[錯誤描述]:     必須選擇數據!');
   if(HaveFocus){ObjCheck.focus();}
   return false;
  }

 if (javaTrim(ObjCheck.value) == '')
 {
  window.alert('錯誤提示/n================================================/n/n[對像名稱]:     ' + ObjName + '/n/n[錯誤描述]:     必須輸入數據!');
  if(HaveFocus){ObjCheck.focus();ObjCheck.select();}
  return false;
 }
 else
 {
  if (ValueLen!=0)
  if (GetStrLen(ObjCheck.value) > ValueLen)
  {
   window.alert('錯誤提示/n================================================/n/n[對像名稱]:     ' + ObjName + '/n/n[錯誤描述]:     數據輸入超過指定長度(' + ValueLen + '),現有數據長度為(' + GetStrLen(ObjCheck.value) + ')!');
   if(HaveFocus){ObjCheck.focus();ObjCheck.select();}
   return false;
  }
 }

 return true;
}

//==============獲取字符串長度(包括漢字)==============================================================
//功能:
//         取得給定字符串的長度(其包括漢字,一個漢字算兩個字符長度);
//參數說明:
//    pstr:給定字符串;
//返回值:
//        String;
//示例:
//  window.alert(GetStrLen('江澤民會見日本客人。'))"
//======================================================================================================
function GetStrLen(pstr)
{
  var AscCode;
  var tmpstr=javaTrim(pstr);
  var StrLen=tmpstr.length;
  var nums=0;
  if (StrLen<=0) return 0;

  for (var i=0;i<StrLen;i++){
   AscCode=tmpstr.charCodeAt(i);
   if (AscCode>127) nums+=2;
   else nums+=1;
  }

  return nums;
}

//提交頁面,并最多給3個元素賦值
function DoSearch(FormName,FormAction,Var1Name,Var1Value,Var2Name,Var2Value,Var3Name,Var3Value)
{
  if(FormAction!='')//窗口是否提交到當前頁面(為空串為提交到當前頁,否則為指定頁名稱);
   FormName.action=FormAction;
  if(Var1Name!='')
   eval(FormName+'.'+Var1Name).value=Var1Value;
  if(Var2Name!='')
   eval(FormName+'.'+Var2Name).value=Var2Value;
  if(Var3Name!='')
   eval(FormName+'.'+Var3Name).value=Var3Value;

  eval(FormName + '.submit()');

}
//格式化數字小數點位數,如:FormatNumber(498.8573945,2) 格式化為2位小數
function FormatNumber(srcStr,nAfterDot){
       var srcStr,nAfterDot;
       var resultStr,nTen;
       srcStr = ""+srcStr+"";
       strLen = srcStr.length;
       dotPos = srcStr.indexOf(".",0);
       if (dotPos == -1){
           resultStr = srcStr+".";
           for (i=0;i<nAfterDot;i++){
               resultStr = resultStr+"0";
           }
           return resultStr;
       }
       else{
           if ((strLen - dotPos - 1) >= nAfterDot){
               nAfter = dotPos + nAfterDot + 1;
               nTen =1;
               for(j=0;j<nAfterDot;j++){
                   nTen = nTen*10;
               }
               resultStr = Math.round(parseFloat(srcStr)*nTen)/nTen;
               return resultStr;
           }
           else{
               resultStr = srcStr;
               for (i=0;i<(nAfterDot - strLen + dotPos + 1);i++){
                   resultStr = resultStr+"0";
               }
               return resultStr;
           }
       }
   }
  


//================
//設置回車鍵為Tab鍵
//================
function setHotKey()
{
 var IEKey = window.event.keyCode;
     
 //回車表示進入下一對像(保存按鈕除外)
 if(IEKey == 13)
 window.event.keyCode=9; 
}

//====================
//將焦點移到objID元素上
//====================
function GetFocus(objID)
{
 var ObjName;
 ObjName = eval("document.all."+objID);
 ObjName.focus();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值