CheckDataFunction.js.svn-base
上传用户:liangcc
上传日期:2019-05-24
资源大小:4412k
文件大小:25k
源码类别:

WEB邮件程序

开发平台:

Java

  1. /*
  2.    nodes:
  3.   下列函数返回值说明:
  4.   凡是“Is”开头的函数,如果是"Is"后指明的状态,则返回真,否则为假
  5.   eg. IsNum 如果是数字,返回真
  6.   某些“Check”开头的函数,如果是"Check"后指明的状态,返回假,否则为真
  7.   某些则相反,请具体查看函数说明
  8.   eg. CheckEmpty 如果是空,返回假
  9.   
  10.   函数名解释:
  11.    当有重载出现时
  12.    NP 表示没有参数(no parameter)
  13.    3P,4P 等表示参数个数(3 parameter,4 parameter)
  14.   
  15.   ***************************************************************
  16.   函数目录:
  17.   -----------校验输入与工具类--------------------------------------------
  18.  
  19.   TurnPage() 翻页功能,应用于按钮的ONCLICK和text的onkeypress事件
  20.   ReplaceDoubleQuotes(strValue) 替换双引号为"
  21.   CheckUnsafeMark(frm)  检查参数frm(form)对象里所有输入控件是否含有非法字符
  22.   CheckKey(KeyCode)  检查输入键是否为0~9,a~z(A~Z),Del,-,.,
  23.   CheckEmptyNP()  校验触发者的值是否为空 
  24.   CheckEmpty(CheckCtl,disptext) 校验输入值是否为空
  25.   CheckCardNo(CheckCtl,disptext)  校验一个合法的身份证号码(15,18位)
  26.   Trim(strSource) 清除左右两边空格
  27.   IsEmail(CheckCtl, s) 判断是否是正确的电子邮件地址
  28.   IsPhoneNumber(CheckCtl,s) 判断是否是正确的电话号码
  29.   IsLetter(CheckCtl,s) 判断是否是字母组合
  30.   IsCode(CheckCtl,s) 判断是否是数字编码组合 数字和数字编码的区别:
  31.  数字编码允许  000000010 ,不允许诸如: -1290092 ,23.,.3456等类型的值,而数字则认为是真
  32.   
  33.  
  34.   ------------数字类-----------------------------------------
  35.   Round(i,digit)   取整函数,digid为保留的小数位数
  36.   CheckPositiveInt(CheckCtl,disptext,IsCanZero) 校验一个正整数
  37.   CheckPositiveIntNP()  校验触发者的值是否为一个正整数
  38.   CheckPositiveFloat(CheckCtl,disptext,floatcount) 校验一个合法的大于等于0的浮点数
  39.   CheckPositiveFloatNP()  校验触发者的值是否一个合法的大于等于0的浮点数(2位小数)
  40.   CheckPositiveFloat4P(CheckCtl,disptext,IsCanZero,floatcount) 校验一个合法的大于0的浮点数,是否可以等于零由参数IsCanZero决定
  41.   IsCost(Costctrl) 检查费用输入,小数位为2位,且不能超过SQL Server中数据字段money最大值
  42.   IsNum(txtctl,message,floatcount) 校验是否是数字
  43.   CheckIntRange(CheckCtl,Min, Max,Msg) 校验一个合法的且在规定范围内的整数
  44.   CheckFloatRange(CheckCtl,Min, Max,Msg) 校验一个合法的且在规定范围内的浮点数
  45.  
  46.  
  47.   -----------日期类-------------------------------------------
  48.   GetDateDiff(strStart,strEnd) 计算两个日期间隔天数
  49.   CheckYear(strYearInput) 检查输入是否是个有效年份
  50.   AddDay(dateObj,days) 把一个日期加上n天
  51.   CheckDiffDate(BDateCtl,EDateCtl,Msg) 比较两个日期的大小,如果开始日期大于结束日期,返回false;
  52.   DateToStr(dateObj) 将一个日期对象转化为格式yyyy-MM-dd字符串
  53.   DateTimeToStr(dateObj) 将一个日期时间对象转化为形如  yyyy-MM-dd HH:mm:ss 的字符串
  54.   StrToDate(str)  yyyy-MM-dd 的字符串转化为日期对象:
  55.   StrToDateTime(str)   将一个yyyy-MM-dd HH:mm:ss 的字符串转化为日期时间对象
  56.   StrToDateTime6P(year,month,day,hour,minute,second) 将一个参数构成的yyyy-MM-dd HH:mm:ss 的字符串转化为日期时间对象
  57.   IsDate(str) 判断一个字符串是否为有效的日期并且格式是否正确 YYYY-MM-DD
  58.   ----------------------------------------------------------
  59.   
  60.   
  61.   
  62.   
  63.   *************************************************************
  64. */
  65. var maxpn=999999999999;
  66. var maxfn=999999999999.9;
  67. var numerrormsg0="请输入0-999999999999之内的数字";
  68. var numerrormsg1="请输入1-999999999999之内的数字";
  69. var overerrormsg="数值超过最大值999999999999";
  70. //翻页功能,应用于按钮的ONCLICK和text的onkeypress事件
  71. //参数: isClick true: 按钮的onclick false: text的onkeypress
  72. //    inputCtl : 输入框对象
  73. //    pageCtl :  储存当前页号的对象
  74. //    maxPageCtl : 储存最大页号的对象 可以为null
  75. function TurnPage(isClick,inputCtl,pageCtl,maxPageCtl){
  76. if (!isClick){
  77.   var sr = event.srcElement;
  78.   if (sr.type.toLowerCase()=="text"){ 
  79.     if (event.keyCode == 13){
  80.         if(!CheckPositiveInt(inputCtl,"页号请输入一个正整数!",false)) {
  81.         event.keyCode=0;
  82. return false;
  83.     }
  84. else {
  85.   if (maxPageCtl){
  86.     if (parseInt(inputCtl.value) > parseInt(maxPageCtl.value)){
  87.      alert("选择页数不能大于最大页数!");
  88.  event.keyCode = 0;
  89.  return false;
  90.     } 
  91.   }
  92.   pageCtl.value = inputCtl.value;
  93.   document.forms(0).submit();
  94. }
  95.     }
  96.   }
  97. } else {
  98.     //是翻页按钮
  99. if(!CheckPositiveInt(inputCtl,"页号请输入一个正整数!",false))
  100.     return false;
  101.       if (maxPageCtl){
  102.      if (parseInt(inputCtl.value) > parseInt(maxPageCtl.value)){
  103.      alert("选择页数不能大于最大页数!");
  104.  return false;
  105.  } 
  106.   } 
  107.   pageCtl.value = inputCtl.value;
  108.   document.forms(0).submit();
  109.  
  110.   } 
  111. }
  112. //替换双引号为"//
  113. function ReplaceDoubleQuotes(strValue){
  114.   return strValue.replace('"','"');
  115. }
  116. //
  117. //检查FORM里所有输入控件是否含有非法字符//
  118. function CheckUnsafeMark(frm)
  119. {
  120. for(var i=0;i<frm.length;i++)
  121. {
  122.  var edit = frm.item(i);
  123. if ( (!edit.type)|| (edit.type.toLowerCase() != "text")) 
  124. {
  125.    continue;
  126. }
  127. else
  128. {
  129.    var s = Trim(edit.value);
  130.    if ((s.indexOf(""")>=0)||(s.indexOf("'")>=0)||(s.indexOf("<")>=0)||(s.indexOf(">")>=0))
  131.    { 
  132.   alert("不能输入包含非法字符(如", ', <, >)的文字!");
  133.   edit.select();
  134.  edit.focus();
  135.  return false;
  136. }
  137.    else
  138. continue;       
  139. }//end of else
  140. }//end of for   
  141. return true;
  142. }
  143. //检查输入键是否为0~9,a~z(A~Z),Del,-,.,/
  144. //KeyDown 有效
  145. function CheckKey(KeyCode)
  146. {
  147. Zero=48;
  148. Nine=57;
  149. Delete=46;
  150. Minus=189;
  151. Dot=190;
  152. Divide=191;
  153. Key_a=65;
  154. Key_z=90;
  155. _Zero=96;
  156. _Nine=105;
  157. _Divide=111;
  158. _Minus=109;
  159. _Dot=110;
  160. return ((KeyCode>=Key_a)&&(KeyCode<=Key_z))||((KeyCode>=Zero)&&(KeyCode<=Nine))||((KeyCode>=_Zero)&&(KeyCode<=_Nine))||(KeyCode==Delete)||(KeyCode==Dot)||(KeyCode==Minus)||(KeyCode==Divide)||(KeyCode==0)||(KeyCode==_Minus)||(KeyCode==_Divide)||(KeyCode==_Dot);
  161. }
  162. //取整函数
  163. //eg. Round(132.123456) 为 132.12
  164. //eg. Round(132.123456,4) 为 132.1234
  165. //eg. Round(132.123456,0) 为 132
  166. function Round(i,digit)
  167. {
  168.   if (isNaN(parseFloat(i)))
  169.   {
  170.  return '0';
  171.    } 
  172. if(digit==0)
  173. p=1;
  174. else
  175. {
  176. if(digit)
  177. p=Math.pow(10,digit);
  178. else
  179. p=100;
  180. }
  181. var mm = Math.round(i*p)/p;
  182. var strTmp = eval("'"+ mm +"'");
  183. var behind = '';
  184. if (strTmp.indexOf('.')>=0)
  185. {
  186.    behind = strTmp.substring(strTmp.indexOf('.')+1,strTmp.length);
  187.    while(digit-behind.length>0)
  188.    {
  189.  behind += '0';
  190.    }
  191.    strTmp = strTmp.substring(0,strTmp.indexOf('.')+1) + behind;
  192.    
  193. }
  194. else
  195. {
  196.    for(var j=0;j< digit;j++)
  197.    {
  198.   behind += '0';
  199.    }
  200. if (digit >0)
  201. {
  202.   strTmp = strTmp + '.' + behind;
  203. }
  204. }
  205. return strTmp;
  206. }
  207. /********************************************
  208. 功能:自动计算两个日期间隔天数
  209. 先要检查开始日期是否大于截止日期,如果大于,返回
  210. 参数: start 开始日期字符串 end 截止日期字符串
  211. */
  212. function GetDateDiff(strStart,strEnd)
  213. {
  214.     var start = strStart;
  215. var end = strEnd;
  216. if (StrToDate(start) > StrToDate(end))
  217. {
  218.  alert("起始日期必须小于截止日期!");return;
  219. }
  220. else
  221. {
  222. var startdate = new Date();
  223. startdate = StrToDate(start);
  224. var enddate = new Date();
  225. enddate =  StrToDate(end);
  226. var overdue = parseFloat(enddate) - parseFloat(startdate);
  227. overdue = overdue/(1000*24*60*60);
  228. return overdue;
  229.  }
  230. }
  231. /*
  232. 功能: 得到两个日期相差的天数(每一个月按30天,一年360天计算) 该函数不精确
  233. 入口参数:
  234. datestartObj: 日期对象1
  235. dateendObj: 日期对象2
  236. 返回 dateendObj - datestartObj相差的天数 */
  237. /*function GetDayDiff(datestartObj,dateendObj)
  238. {
  239. var year=dateendObj.getFullYear() - datestartObj.getFullYear();
  240. var month=dateendObj.getMonth() - datestartObj.getMonth();
  241. var day=dateendObj.getDate() - datestartObj.getDate();
  242. return year*12*30+month*30+day;
  243. }*/
  244. /*
  245. 功能:检查输入是否是个有效年份 */
  246. function CheckYear(strYearInput)
  247. {
  248.       
  249. var years = strYearInput;
  250. if ( years != ""  && !isNaN(parseInt(years)) )
  251. {
  252. if (parseInt(years)<=3000  && parseInt(years)>=1900)
  253. {
  254. return true;
  255. }
  256. else
  257. { alert('请输入合法年份!');return false;}
  258. }
  259. else 
  260.   return true;
  261. }
  262. /*  功能: 把一个日期加上n天
  263. 入口参数:
  264. dateObj: 要计算的日期对象
  265. days: 增加的天数 
  266. 返回  增加后的新日期对象 */
  267. function AddDay(dateObj,days)
  268. {
  269.     try
  270. {
  271.   
  272.   var lngDiff =  parseFloat(days);
  273.   lngDiff = lngDiff*24*60*60*1000;
  274.   dateObj = StrToDate(DateToStr(dateObj));
  275.   var ret = new Date(parseFloat(dateObj)+lngDiff);
  276.   return ret;
  277. }
  278. catch(x)
  279. {
  280.    return dateObj;
  281. }
  282. }
  283. /* 功能: 校验一个正整数
  284. 入口参数:CheckCtl: 要校验的输入框 disptext: 出错显示的信息 IsCanZero : 是否可以为零
  285. 返回:  真: 是正整数 假: 不是*/
  286. function CheckPositiveInt(CheckCtl,disptext,IsCanZero) 
  287. {   
  288. var s=new String(Trim(CheckCtl.value));
  289. var temp=parseInt(s);
  290. var result=true;
  291. if (  (isNaN(temp)) || (temp<0) || ( s.indexOf(".")>=0 )||(temp!=s))
  292. {
  293. result=false;
  294. }
  295. else if ( (!IsCanZero)&&(temp==0) )
  296.  {
  297. result=false;
  298.  }
  299. if  (temp>maxpn) 
  300. {
  301. result=false;
  302. disptext=overerrormsg;
  303. }
  304.  if (!result)
  305.  {
  306. DispMessage(CheckCtl, disptext);
  307. return false;
  308. }
  309.  return true;
  310.  
  311. }
  312. //
  313. //不带参数的校验一个正整数
  314. function CheckPositiveIntNP()
  315. {
  316.    var o = event.srcElement;
  317.    if (o)
  318.    {
  319.   if (o.tagName == "INPUT"  && !isNaN(parseFloat(o.value)) )
  320. return CheckPositiveInt(o,'请输入正整数!',true)
  321.   else
  322. return true;
  323.    
  324.    }
  325.    else
  326.  return true;
  327. }
  328. /*功能: 校验一个合法的大于等于0的浮点数
  329. 入口参数:
  330. CheckCtl: 要校验的输入框 disptext: 出错显示的信息
  331. floatcount: 小数的最高位数(如果没有该参数,则默认为4位)
  332. 如果没有page参数,有floatcunt参数则:把page 置null
  333. 如: CheckPositiveFloat(CheckCtl,"出错显示的信息",null,5) */
  334. function CheckPositiveFloat(CheckCtl,disptext,floatcount)
  335. {
  336. var s=new String(Trim(CheckCtl.value));
  337. temp=parseFloat(s);
  338. var result=true;
  339. if( (isNaN(temp)) || (temp< 0)||(temp!=s) )
  340. {
  341. result=false;
  342. }
  343. else if (temp>maxfn) 
  344. {
  345. result=false;
  346. disptext=overerrormsg;
  347. }
  348. else
  349. {   
  350. limitcount=floatcount?floatcount:4;
  351. var array=s.split(".");
  352. if (array[1]==null)
  353. count=-1;
  354. else
  355. {
  356. var str=new String(array[1]);
  357. count=str.length;
  358. }
  359. if (count>limitcount)
  360. {
  361.  b=confirm("小数位数超过"+limitcount+"位,是否继续?"); 
  362.  if (b)
  363.   {
  364.    return true;
  365.   }
  366.   else
  367.   {
  368. CheckCtl.select();
  369. CheckCtl.focus();
  370. return false;
  371.   }
  372. }
  373.  }
  374.  if (!result)
  375.  {
  376. DispMessage(CheckCtl,disptext);
  377. return false;
  378.  }
  379. return true;
  380. }
  381. //不带参数校验一个合法的大于等于0的浮点数(2位小数)
  382. function CheckPositiveFloatNP()
  383. {
  384.    var o = event.srcElement;
  385.    if (o)
  386.    {
  387.   if (o.tagName == "INPUT"  && !isNaN(parseFloat(o.value)) )
  388.  return CheckPositiveFloat(o,'请输入正确的数目!',2);
  389.   else
  390.  return true;
  391.    }
  392.    else
  393.  return true;
  394. }
  395. /*
  396.    校验一个合法的大于0的浮点数
  397.    参数:CheckCtl: 要校验的输入框
  398.         disptext: 出错显示的信息
  399. IsCanZero:是否可以等于零
  400. floatcount: 小数的最高位数(如果没有该参数,则默认为4位)
  401. */
  402. function CheckPositiveFloat4P(CheckCtl,disptext,IsCanZero,floatcount)
  403. {
  404. if ( CheckPositiveFloat(CheckCtl,disptext,floatcount) )
  405.  {
  406. if ( (parseFloat(CheckCtl.value)==0) &&(!IsCanZero) )
  407. {
  408. DispMessage(CheckCtl,disptext);
  409. return false;
  410. }
  411. else return true;
  412.  }
  413. else
  414.  return false;
  415. }
  416. /*
  417. 检查费用输入,小数位为2位,且不能超过数据字段money最大值
  418. true: 正确
  419. */
  420. function IsCost(Costctrl)
  421. {
  422. if (Costctrl.value != "") 
  423. {
  424.  if (IsNum(Costctrl,"费用请填入金额!",null,2))
  425. {
  426.   if (!CheckFloatRange(Costctrl,0,900337203685477.5807,"费用金额超出范围!"))
  427.   return false;
  428.   else
  429.   return true;
  430.   
  431. }
  432.   else
  433.   return false;           
  434. }
  435. else
  436. return true;
  437. }
  438. /*判断是否是数字的函数
  439.    输入:txtctl   输入的文本控件 message  显示的错误信息
  440.     返回值 :是数字返回true,不是返回false
  441. floatcount: 小数的最高位数(如果没有该参数,则默认为4位)
  442. 如: IsNum(txtctl,"出错显示的信息",5)  */
  443. function IsNum(txtctl,message,floatcount)
  444. {
  445. var s=new String(Trim(txtctl.value));
  446. var result=true;
  447. var num=Number(s);
  448. if ( (isNaN(num)) || (s=="") )
  449. {
  450. result=false;
  451. }
  452. else if (num>maxfn) 
  453. {
  454. message=overerrormsg;
  455. result=false;
  456. }
  457. else
  458. {
  459. limitcount=floatcount?floatcount:4;
  460. var array=s.split(".");
  461. if (array[1]==null)
  462. count=-1;
  463. else
  464. {
  465. var str=new String(array[1]);
  466. count=str.length;
  467. }
  468. if (count>limitcount)
  469. {
  470.  alert("小数位数超过"+limitcount+"位!"); 
  471.  txtctl.select();
  472.  txtctl.focus();
  473.  return false;
  474. }
  475. }
  476. if (!result)
  477. {
  478. DispMessage(txtctl,message);
  479. return false;
  480. }
  481. return true;
  482. }
  483. /*
  484.    功能:检查是否为空,不用任何参数,触发者为Text
  485. */
  486. function CheckEmptyNP()
  487. {
  488. var CheckCtl = event.srcElement;
  489. if (Trim(CheckCtl.value)=="" )
  490. {
  491. CheckCtl.focus();
  492. return false;
  493. }
  494. else
  495. return true;
  496. }
  497. /*功能: 校验一个值是否为空
  498. 入口参数:CheckCtl: 要校验的输入框 disptext: 出错显示的信息
  499. false:为空
  500. */
  501. function CheckEmpty(CheckCtl,disptext)
  502. {
  503. if (Trim(CheckCtl.value)=="" )
  504. {
  505. DispMessage(CheckCtl,disptext);
  506. return false;
  507. }
  508. else
  509.   return true;
  510. }
  511. /*功能: 校验一个合法的且在规定范围内的整数
  512. 入口参数:
  513. CheckCtl: 要校验的输入框 Min:  下限
  514. Max:  上限
  515. Msg: 出错显示的信息  */
  516. function CheckIntRange(CheckCtl,Min, Max,Msg)
  517. {
  518. if (!IsNum(CheckCtl,Msg))
  519. return false;
  520. var s=new String(Trim(CheckCtl.value));
  521. v=parseInt(s);     
  522. if  ( (v<Min) || (v>Max) || (s.indexOf(".")>=0))
  523. {
  524. DispMessage(CheckCtl,Msg);
  525. return false;
  526. }
  527. return true;
  528. }
  529. /*功能: 校验一个合法的且在规定范围内的浮点数 入口参数:
  530. CheckCtl: 要校验的输入框 Min:  下限
  531. Max:  上限
  532. Msg: 出错显示的信息  */
  533. function CheckFloatRange(CheckCtl,Min, Max,Msg)
  534. {
  535. if (!IsNum(CheckCtl,Msg))
  536. return false;
  537. v=parseFloat(Trim(CheckCtl.value));     
  538. if  ( (v<Min) || (v>Max) )
  539. {
  540. DispMessage(CheckCtl,Msg);
  541. return false;
  542. }
  543. return true;
  544. }
  545. /*功能: 校验一个合法的身份证号码(15,18位)
  546. 入口参数:
  547. CheckCtl: 要校验的输入框
  548. disptext: 出错显示的信息  */
  549. function CheckCardNo(CheckCtl,disptext)
  550. {
  551. var result=true;
  552. var strvalue=new String(Trim(CheckCtl.value));
  553. if ( strvalue!="" )
  554. {
  555. num=parseInt(strvalue);
  556. if (  ( isNaN(num) ) || (num<100000000000000)|| (strvalue.indexOf(".")>=0)||(num!=strvalue) )
  557. result=false;
  558. else
  559.  if ( (num>999999999999999)&&(num<100000000000000000) )
  560.    result=false;
  561.  else  
  562.    if (num>999999999999999999)
  563. result=false;
  564. }  
  565. if (!result)
  566.  {
  567. DispMessage(CheckCtl,disptext); 
  568.  }
  569. return result;
  570. }
  571. //显示信息
  572. function DispMessage(CheckCtl,Msg)
  573. {
  574. if (Msg!="")
  575. {
  576. alert(Msg);
  577. //CheckCtl.select();
  578. CheckCtl.focus();
  579. }
  580. }
  581. /*
  582.    去掉空格同VBSCRIPT中的trim
  583. */
  584. function Trim(strSource) 
  585. {
  586. return  strSource.replace(/^s*/,'').replace(/s*$/,'');
  587. }
  588. /*功能: 比较两个日期的大小,如果开始日期大于结束日期,返回false;
  589. 入口参数:
  590. BDate:开始日期输入框 EDate:结束日期输入框
  591. Msg: 出错显示的信息  */
  592. function CheckDiffDate(BDate,EDate,Msg)
  593. {
  594. if ( (!CheckEmpty(BDate,"请输入开始时间或日期!")) || (!CheckEmpty(EDate,"请输入结束时间或日期!")) )
  595. return false;
  596. str = BDate.value;
  597. if(!IsDate(str)){DispMessage(BDate,"开始时间或日期不是有效的日期");return false;}
  598. aa = str.split("-");
  599. BYear = parseInt(aa[0],10);
  600. BMonth = parseInt(aa[1],10);
  601. BDay = parseInt(aa[2],10);
  602. str = EDate.value;
  603. if(!IsDate(str)){DispMessage(EDate,"结束时间或日期不是有效的日期");return false;}
  604. bb = str.split("-");
  605. EYear = parseInt(bb[0],10);
  606. EMonth = parseInt(bb[1],10);
  607. EDay = parseInt(bb[2],10);
  608. if(BYear<1900)
  609. {
  610. DispMessage(BDate,"日期不能小于1900年!");
  611. return false;
  612. }
  613. if(EYear<1900)
  614. {
  615. DispMessage(EDate,"日期不能小于1900年!");
  616. return false;
  617. }
  618. b=(BYear*10000)+(BMonth*100)+BDay;
  619. e=(EYear*10000)+(EMonth*100)+EDay;
  620. if(e==b)
  621. return true;
  622. else 
  623. if(e>b)
  624. return true;
  625. else 
  626. {
  627. DispMessage(BDate,Msg);
  628. return false;
  629. }
  630. }
  631. /*
  632. 功能: 将一个日期对象转化为格式yyyy-MM-dd字符串:
  633. dateObj 日期对象
  634. */
  635. function DateToStr(dateObj)
  636. {
  637.   var im;
  638.   var id;
  639.   var paradate = new Date();
  640.   paradate = dateObj;
  641.   if ((paradate.getMonth()+1)<10)
  642.   {
  643.    im = paradate.getMonth()+1;
  644.    im = '0' + im;
  645.   }
  646.   else
  647.    im = paradate.getMonth()+1; 
  648.   if ((paradate.getDate())<10)
  649.    id = "0"+paradate.getDate();
  650.   else
  651.    id = paradate.getDate(); 
  652.   return  paradate.getFullYear() + "-" + im + "-" 
  653.    + id;
  654. }
  655. /*功能: 将一个日期时间对象转化为字符串:
  656. date 日期对象 
  657.   返回:形如  yyyy-MM-dd HH:mm:ss 的字符串
  658. */
  659. function DateTimeToStr(dateObj)
  660. {
  661.   var im;
  662.   var id;
  663.   var ih;
  664.   var iminutes;
  665.   var iseconds;
  666.   var paradate = new Date();
  667.   paradate = dateObj;
  668.   if ((paradate.getMonth()+1)<10)
  669.   {
  670.    im = paradate.getMonth()+1;
  671.    im = '0' + im;
  672.   }
  673.   else
  674.    im = paradate.getMonth()+1; 
  675.   if ((paradate.getDate())<10)
  676.    id = "0"+paradate.getDate();
  677.   else
  678.    id = paradate.getDate(); 
  679.  
  680.   if (paradate.getHours()< 10)
  681.   {
  682.  ih = "0" + paradate.getHours();
  683.   }
  684.   else
  685.  ih = paradate.getHours();
  686.    if (paradate.getMinutes()< 10)
  687.   {
  688.  iminutes = "0" + paradate.getMinutes();
  689.   }
  690.   else
  691.  iminutes = paradate.getMinutes();
  692.  
  693.   if (paradate.getSeconds()< 10)
  694.   {
  695.  iseconds = "0" + paradate.getSeconds();
  696.   }
  697.   else
  698.  iseconds = paradate.getSeconds();
  699.   var ret =  paradate.getFullYear() + "-" + im + "-" 
  700.    + id + " " + ih + ":" + iminutes + ":" + iseconds;
  701.    return ret;
  702. }
  703. /*功能: 字符串转化为日期对象:
  704.   返回: date 日期对象 
  705. str yyyy-MM-dd 的字符串
  706. */
  707.  function StrToDate(str)
  708.  {
  709. var date = new Date();
  710. date = Date.parse(str);
  711.   if (isNaN(date)) {
  712.   date = Date.parse(str.replace(/-/g,"/")); // 识别日期格式:YYYY-MM-DD 
  713.   if (isNaN(date)) date = 0;
  714.   }
  715. date = new Date(date);  
  716. return(date);
  717.   }
  718. /*功能: 将一个字符串转化为日期时间对象:
  719.   返回: date 日期对象 
  720. str yyyy-MM-dd HH:mm:ss 的字符串
  721. */
  722. function StrToDateTime(str)
  723.    var datTmp = new Date();
  724.    try
  725.    {
  726.    
  727.    var aryTmp = str.split(' ');
  728.    var aryTmpBig = aryTmp[0].split('-');
  729.    var year = aryTmpBig[0];
  730.    var month = aryTmpBig[1];
  731.    var day = aryTmpBig[2];
  732.    
  733.    var mm =  month;
  734.    if (mm.indexOf('0') == 0)
  735.    {
  736.   
  737.   mm = mm.substring(1,mm.length);
  738.    }
  739.    var dd = day;
  740.    if (mm=="1"){mm="JAN";}
  741.    if (mm=="2"){mm="FEB";}
  742.    if (mm=="3"){mm="MAR";}
  743.    if (mm=="4"){mm="APR";}
  744.    if (mm=="5"){mm="MAY";}
  745.    if (mm=="6"){mm="JUN";}
  746.    if (mm=="7"){mm="JUL";}
  747.    if (mm=="8"){mm="AUG";}
  748.    if (mm=="9"){mm="SEP";}
  749.    if (mm=="10"){mm="OCT";}
  750.    if (mm=="11"){mm="NOV";}
  751.    if (mm=="12"){mm="DEC";} 
  752. var expdate_string=mm+" "+dd+","+year+" "+aryTmp[1];
  753. var mii = Date.parse(expdate_string);
  754. datTmp = new Date(mii);
  755.   
  756.    }
  757.    catch(x)
  758.    {alert('日期格式不正确!');}
  759.    return datTmp;
  760. }
  761. /*功能: 将字符串转化为日期时间对象:
  762.   返回: date 日期对象 
  763. yyyy-MM-dd HH:mm:ss 的字符串
  764. */
  765. function StrToDateTime6P(year,month,day,hour,minute,second)
  766. {
  767.    var datTmp = new Date();
  768.    var mm =  month;
  769.    if (mm.indexOf('0') == 0)
  770.    {
  771.   
  772.   mm = mm.substring(1,mm.length);
  773.    }
  774.    var dd = day;
  775.    if (mm=="1"){mm="JAN";}
  776.    if (mm=="2"){mm="FEB";}
  777.    if (mm=="3"){mm="MAR";}
  778.    if (mm=="4"){mm="APR";}
  779.    if (mm=="5"){mm="MAY";}
  780.    if (mm=="6"){mm="JUN";}
  781.    if (mm=="7"){mm="JUL";}
  782.    if (mm=="8"){mm="AUG";}
  783.    if (mm=="9"){mm="SEP";}
  784.    if (mm=="10"){mm="OCT";}
  785.    if (mm=="11"){mm="NOV";}
  786.    if (mm=="12"){mm="DEC";} 
  787.   
  788.    var expdate_string=mm+" "+dd+","+year+" "+hour+":"+minute+":"+second;
  789.   
  790.    try
  791.    {
  792.  var mii = Date.parse(expdate_string);
  793.  datTmp = new Date(mii);
  794.  
  795.    }
  796.    catch(x)
  797.    {alert('日期格式不正确!');}
  798.    return datTmp;
  799. }
  800. /*
  801.    判断一个字符串是否为有效的日期并且格式是否正确 YYYY-MM-DD
  802.    参数 str:被检查的字串
  803.    返回:真或假
  804. */
  805. function IsDate(str)
  806. {
  807.   
  808.    if (Trim(str)=="") return false;
  809.    try
  810.    {
  811.  
  812.  var year = str.substring(0,4);
  813.  if (isNaN(parseInt(year,10)) || (parseInt(year,10)>3000 || parseInt(year,10)<1900) )
  814.  {
  815. return false;
  816.  }
  817.  if (str.substring(4,5)!="-" || str.substring(7,8)!="-") 
  818.  {  
  819. return false;
  820.  }
  821.  var MM = str.substring(5,7);
  822.  var DD = str.substring(8,10);
  823.  if (MM!="01" && MM!="02" && MM!="03" && MM!="04" && MM!="05" && MM!="06" && MM!="07" && MM!="08"&&MM!="09" && MM!="10"&&MM!="11" && MM!="12")
  824.  {
  825. return false;
  826.  }
  827.  if (isNaN(parseInt(DD,10)))
  828.  {
  829. return false;
  830.  }
  831.  var date = Date.parse(MM+'/'+DD+'/'+year); 
  832.   if (isNaN(date))
  833.   {
  834.   return false;//date = Date.parse(str.replace(/-/g,"/"));
  835.   }
  836.   
  837.   return true;
  838.    }
  839.    catch(x)
  840.    {
  841.    
  842.   return false;
  843.    }  
  844. }
  845. /*
  846.   检验正则表达式是否符合
  847. */
  848. function IsValid(p, t, s) {
  849. if (p.test(t.value))
  850. return true;
  851. if (s != null) {
  852. t.focus();
  853. alert(s);
  854. }
  855. return false;
  856. }
  857. /*
  858.  判断是否是正确的电子邮件地址
  859.  参数: CheckCtl :要检验的输入框 s:出错时需要警告的信息
  860.  true:是 false:否
  861. */
  862. function IsEmail(CheckCtl, s) {
  863. return IsValid(/^s*w+@w+(.w+)+s*$/i, CheckCtl, s);
  864. }
  865. /*
  866.  判断是否是正确的电话号码
  867.  电话号码仅允许 数字, ( , ) , -  号
  868.  参数: CheckCtl :要检验的输入框 s:出错时需要警告的信息
  869.  true:是 false:否
  870. */
  871. function IsPhoneNumber(CheckCtl,s)
  872. {
  873. try
  874. {
  875. var t =  Trim(CheckCtl.value);
  876. if (t==null || t=="" )
  877. {
  878. return false;
  879. }
  880. t = t.replace("-","");
  881. t = t.replace("(","");
  882. t = t.replace(")","");
  883. if (t.indexOf(".")>=0)
  884. {
  885.    CheckCtl.focus();
  886.    alert(s);
  887.    return false;
  888. }
  889. for(var i=0;i< t.length;i++)
  890. {
  891.     var c = t.charAt(i);
  892. if (isNaN(parseInt(c,10)))
  893. {
  894.    CheckCtl.focus();
  895.    alert(s);
  896.    return false;
  897. }
  898. }
  899. return true;
  900. }
  901. catch(x)
  902. {
  903.    return false;
  904. }
  905. }
  906. /*
  907.  判断是否是字母组合
  908.  参数: CheckCtl :要检验的输入框 s:出错时需要警告的信息
  909.  true:是 false:否
  910. */
  911. function IsLetter(CheckCtl,s)
  912. {
  913.     try
  914. {  
  915.     var t =  Trim(CheckCtl.value);
  916. if (t==null || t=="")
  917. {
  918. return false;
  919. }
  920.        
  921.       for(var i=0;i<t.length;i++)
  922.       {
  923.         
  924.         var sss = t.charCodeAt(i);
  925.         if (! (sss>=65 && sss<=90 || sss>=97 && sss<=122) )
  926.         {
  927.            alert(s);
  928.    CheckCtl.focus();
  929.            return false;
  930.         }
  931.       }
  932.       return true;
  933. }
  934. catch(x)
  935. {
  936.    return false;
  937. }
  938. }
  939. /*
  940.  判断是否是数字编码组合
  941.  数字和数字编码的区别:
  942.  数字编码允许  000000010 ,不允许诸如: -1290092 ,23.,.3456等类型的值,而数字则认为是真
  943.  参数: CheckCtl :要检验的输入框 s:出错时需要警告的信息
  944.  true:是 false:否
  945. */
  946. function IsCode(CheckCtl,s)
  947. {
  948.     try
  949. {  
  950.     var t =  Trim(CheckCtl.value);
  951. if (t==null || t=="")
  952. {
  953. return false;
  954. }
  955.        
  956.       for(var i=0;i<t.length;i++)
  957.       {
  958.         
  959.         var sss = t.charCodeAt(i);
  960.         if (! (sss>=48 && sss<=57 ) )
  961.         {
  962.            alert(s);
  963.    CheckCtl.focus();
  964.            return false;
  965.         }
  966.       }
  967.       return true;
  968. }
  969. catch(x)
  970. {
  971.    return false;
  972. }
  973. }