checkform.js 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897
  1. //$Id: checkForm.js,$
  2. //tony 2004-3-30
  3. //新增了对form的查询条件进行自动拼装的功能getQueryString();
  4. /**
  5. * 检查送出的form的每个表单元素是否符合填写要求
  6. * @fm 需要检查的form元素。
  7. * @return 如果form的所有表单元素都符合要求,将返回true,
  8. * 否则将会报告不符合的原因,同时返回false。
  9. * 示例:
  10. * <form onsubmit="return checkForm(this.form);">
  11. * <input type=submit>
  12. * <input name=email title="请填写邮件地址~email!">
  13. * </form>
  14. * 说明:
  15. * 在form表单元素的title属性中指明此表单元素期望的格式。
  16. * 此格式说明如下
  17. * 请填写邮件地址~email!
  18. * 以最后一个"~"为界,前面的是提示信息,后面是格式信息。
  19. * 格式信息请遵守以下规则:
  20. * [number[f]:][type][!]
  21. * 说明:
  22. * number[f]: 一个数值后面跟一个":",表示此域的文本长度不可以超过指定的数值,如果在数值后面有个f表示固定长度必须为多少位
  23. * type可以是如下表达式
  24. * email 邮件地址
  25. * int 整数
  26. * float 浮点数
  27. * date 日期
  28. * time 时间
  29. * hasChinese 含有中文
  30. * allChinese 全部是中文
  31. * noChinese 没有中文
  32. * /.../[gi] 自定义正则式
  33. * !表示此处文本不可以为空。
  34. * 对于<input type=radio > 格式串为
  35. * "请选择一个选项~!"表示此radio组必须选择一个选项
  36. * "请选择一个选项~"表示此radio组的选项可以不选。
  37. * 对于<input type=checkbox >或者<select multiple></select>格式串的意义为
  38. * 说明信息~min:0max:3
  39. * 对于<select ></select>非multiple类型
  40. * "请选择一个选项~!"表示此select不可以选择第一个选项
  41. * "请选择一个选项~"表示此select可以选择第一个选项
  42. */
  43. function killErrors() {
  44. return true;
  45. }
  46. function checkForm(fm)
  47. {
  48. //window.onerror = killErrors;
  49. for(var i=0;i<fm.length;i++)
  50. {
  51. var title=fm[i].title;
  52. if(title=="")continue;//忽略未定义title的元素
  53. var p=title.lastIndexOf("~");
  54. if(p<0)continue;//忽略title中未定义检查格式的元素
  55. var info=title.substring(0,p);
  56. var format=title.substring(p+1,title.length);
  57. var format1=title.substring(p+1,title.length);
  58. var format2=title.substring(p+1,title.length);
  59. var name=fm[i].name;
  60. if(name=="")continue;//忽略没有名字的元素
  61. var value=trim(fm[i].value);
  62. //fm[i].value=value;//自动除去送出项的两端的空格
  63. if(fm[i].type=="radio")
  64. {
  65. if(checkRadio(fm,fm[i]))
  66. {
  67. continue;
  68. }
  69. else
  70. {
  71. return false;
  72. }
  73. }
  74. if(fm[i].type=="checkbox")
  75. {
  76. if(checkCheckbox(fm,fm[i]))
  77. {
  78. continue;
  79. }
  80. else
  81. {
  82. return false;
  83. }
  84. }
  85. if(fm[i].type=="select-one")
  86. {
  87. if(checkSelectOne(fm[i]))
  88. {
  89. continue;
  90. }
  91. else
  92. {
  93. return false;
  94. }
  95. }
  96. if(fm[i].type=="select-multiple")
  97. {
  98. if(checkSelectMultiple(fm[i]))
  99. {
  100. continue;
  101. }
  102. else
  103. {
  104. return false;
  105. }
  106. }
  107. var notNull=false;
  108. if(format.charAt(format.length-1)=="!")
  109. {
  110. notNull=true;
  111. format=format.substring(0,format.length-1);
  112. }
  113. if(notNull)
  114. {
  115. if(value=="")
  116. {
  117. //alert(info+"\n"+name+"的内容不可以为空。");
  118. alert(info+"\n其内容不可以为空。");
  119. try {
  120. fm[i].focus();
  121. }
  122. catch (e){
  123. }
  124. finally {
  125. }
  126. return false;
  127. }
  128. }
  129. else
  130. {
  131. //内容可以为空时,
  132. if(value=="")
  133. continue;
  134. }
  135. ///判断是否为int类型
  136. if(format2.charAt(format2.length-1)=="!")
  137. {
  138. format2=format2.substring(0,format2.length-1);
  139. }
  140. var colonP2=format2.indexOf(":");
  141. format2=format2.substring(colonP2+1,format2.length);
  142. //alert (format2);
  143. var colonP=format.indexOf(":");
  144. if(format2 != "int")
  145. {
  146. //内容的长度判断
  147. //var colonP=format.indexOf(":");
  148. if(colonP>0)
  149. {
  150. if(format.charAt(colonP-1)=='f')
  151. {
  152. var lengthLimit=format.substring(0,colonP-1);
  153. if(!isNaN(lengthLimit))
  154. {
  155. if(value.length!=lengthLimit)
  156. {
  157. //alert(info+"\n"+name+"的长度为"+value.length+"位,必须为"+lengthLimit+"位");
  158. alert(info+"\n其长度为"+value.length+"位,必须为"+lengthLimit+"位");
  159. fm[i].focus();
  160. return false;
  161. }
  162. }
  163. }
  164. else
  165. {
  166. var lengthLimit=format.substring(0,colonP);
  167. if(!isNaN(lengthLimit))
  168. {
  169. if(value.length>lengthLimit)
  170. {
  171. //alert(info+"\n"+name+"的长度("+value.length+")超过限制"+lengthLimit);
  172. alert(info+"\n其长度("+value.length+")超过限制"+lengthLimit);
  173. fm[i].focus();
  174. return false;
  175. }
  176. }
  177. }
  178. }
  179. }
  180. format=format.substring(colonP+1,format.length);
  181. //alert (format);
  182. if(format=="email")
  183. {
  184. //电子邮件格式
  185. var found=value.match(/\w+@.+\..+/);
  186. if(found==null)
  187. {
  188. //alert(info+"\n"+name+"的格式不正确:\n\""+value+"\"不是一个Email地址");
  189. alert(info+"\n其格式不正确:\n\""+value+"\"不是一个Email地址");
  190. fm[i].focus();
  191. return false;
  192. }
  193. }
  194. else if(format=="int")
  195. {
  196. //整数
  197. var intVal=parseInt(value);
  198. if(isNaN(intVal)||intVal!=value)
  199. {
  200. //alert(info+"\n"+name+"的格式不正确:\n"+value+"不是一个整数。");
  201. alert(info+"\n其格式不正确:\n"+value+"不是一个整数。");
  202. fm[i].focus();
  203. return false;
  204. }
  205. //内容的值的大小判断
  206. var colonP=format1.indexOf(":");
  207. if(colonP>0)
  208. {
  209. var lengthLimit=format1.substring(0,colonP);
  210. if(!isNaN(lengthLimit))
  211. {//alert(value);
  212. if(parseInt(value)>parseInt(lengthLimit))
  213. {
  214. //alert(info+"\n"+name+"的长度("+value.length+")超过限制"+lengthLimit);
  215. alert(info+"\n其值("+value+")超过限制"+lengthLimit);
  216. fm[i].focus();
  217. return false;
  218. }
  219. }
  220. }
  221. }
  222. else if(format=="float")
  223. {
  224. //浮点数
  225. var floatVal=parseFloat(value);
  226. if(isNaN(floatVal)||floatVal!=value)
  227. {
  228. //alert(info+"\n"+name+"的格式不正确:\n"+value+"不是一个浮点数。");
  229. alert(info+"\n其格式不正确:\n"+value+"不是一个浮点数。");
  230. fm[i].focus();
  231. return false;
  232. }
  233. }
  234. else if(format=="date")
  235. {
  236. //日期
  237. var found=value.match(/(\d{1,5})-(\d{1,2})-(\d{1,2})/);
  238. var found2=value.match(/(\d{1,5})\/(\d{1,2})\/(\d{1,2})/);
  239. if(found==null||found[0]!=value||found[2]>12||found[3]>31)
  240. {
  241. if(found2==null||found2[0]!=value||found2[2]>12||found2[3]>31)
  242. {
  243. //alert(info+"\n"+name+"的格式不正确:\n\""+value+"\"不是一个日期\n提示:[2000-01-01]");
  244. alert(info+"\n其格式不正确:\n\""+value+"\"不是一个日期\n提示:[2000-01-01]");
  245. fm[i].focus();
  246. return false;
  247. }
  248. }
  249. var year=trim0(found[1]);
  250. var month=trim0(found[2])-1;
  251. var date=trim0(found[3]);
  252. var d=new Date(year,month,date);
  253. if(d.getFullYear()!=year||d.getMonth()!=month||d.getDate()!=date)
  254. {
  255. //alert(info+"\n"+name+"的内容不正确:\n\""+value+"\"不是一个正确的日期\n提示:[2000-01-01]");
  256. alert(info+"\n其内容不正确:\n\""+value+"\"不是一个正确的日期\n提示:[2000-01-01]");
  257. fm[i].focus();
  258. return false;
  259. }
  260. }
  261. else if(format=="time")
  262. {
  263. //时间
  264. var found=value.match(/(\d{2}):(\d{2}):(\d{2})/);
  265. if(found==null||found[0]!=value||found[1]>23||found[2]>59||found[3]>59)
  266. {
  267. //alert(info+"\n"+name+"的格式不正确:\n\""+value+"\"不是一个时间\n提示:[05:38:00]");
  268. alert(info+"\n其格式不正确:\n\""+value+"\"不是一个时间\n提示:[05:38:00]");
  269. fm[i].focus();
  270. return false;
  271. }
  272. }
  273. else if(format=="hasChinese")
  274. {
  275. var _hasChinese=false;
  276. for(var j=0;j<value.length;j++)
  277. {
  278. if(value.charCodeAt(j)>255)
  279. {
  280. _hasChinese=true;
  281. break;
  282. }
  283. }
  284. if(!_hasChinese)
  285. {
  286. //alert(info+"\n"+name+"的内容需要中文:\n\""+value+"\"不含有任何中文字符");
  287. alert(info+"\n其内容需要中文:\n\""+value+"\"不含有任何中文字符");
  288. fm[i].focus();
  289. return false;
  290. }
  291. }
  292. else if(format=="allChinese")
  293. {
  294. for(var j=0;j<value.length;j++)
  295. {
  296. if(value.charCodeAt(j)<=255)
  297. {
  298. //alert(info+"\n"+name+"的内容要求全中文:\n\""+value+"\"含有非中文字符");
  299. alert(info+"\n其内容要求全中文:\n\""+value+"\"含有非中文字符");
  300. fm[i].focus();
  301. return false;
  302. }
  303. }
  304. }
  305. else if(format=="noChinese")
  306. {
  307. for(var j=0;j<value.length;j++)
  308. {
  309. if(value.charCodeAt(j)>255)
  310. {
  311. //alert(info+"\n"+name+"的内容要求非中文:\n\""+value+"\"含有中文字符");
  312. alert(info+"\n其内容要求非中文:\n\""+value+"\"含有中文字符");
  313. fm[i].focus();
  314. return false;
  315. }
  316. }
  317. }
  318. else if(format!="")
  319. {
  320. //自定义
  321. try
  322. {
  323. var found=value.match(eval(format));
  324. if(found==null||found[0]!=value)
  325. {
  326. //alert(info+"\n"+name+"的格式不不符合要求:\""+value+"\"\n提示:["+format+"]");
  327. alert(info+"\n其格式不不符合要求:\""+value+"\"\n提示:["+format+"]");
  328. fm[i].focus();
  329. return false;
  330. }
  331. }
  332. catch(e)
  333. {
  334. //alert(e.name+":\n["+fm[i].name+"]不合法的正则式\""+format+"\"");
  335. alert(e.name+":\n不合法的正则式\""+format+"\"");
  336. return false;
  337. }
  338. }
  339. }
  340. return true;
  341. }
  342. function checkRadio(fm,opt)
  343. {
  344. var title=opt.title;
  345. if(title=="")return true;//忽略未定义title的元素
  346. var p=title.lastIndexOf("~");
  347. if(p<0)return true;//忽略title中未定义检查格式的元素
  348. var info=title.substring(0,p);
  349. var format=title.substring(p+1,title.length);
  350. var name=opt.name;
  351. if(name=="")return true;//忽略没有名字的元素
  352. if(format=="!")
  353. {
  354. //必须选择一个选项
  355. if(typeof(fm.all[name].length)=="undefined")
  356. {
  357. //同名radio只有一个
  358. if(opt.checked)
  359. {
  360. return true;
  361. }
  362. else
  363. {
  364. //alert(info+"\n必须选择"+name);
  365. alert(info+"\n必须选择");
  366. opt.focus();
  367. return false;
  368. }
  369. }
  370. else
  371. {
  372. //是一个radio组
  373. var radios=fm[name];
  374. for(var j=0;j<radios.length;j++)
  375. {
  376. if(radios[j].checked==true)return true;
  377. }
  378. //alert(info+"\n必须选择"+name+"的一个选项");
  379. alert(info+"\n必须选择的一个选项");
  380. opt.focus();
  381. return false;
  382. }
  383. }
  384. else
  385. {
  386. //可以一个选项也不选
  387. return true;
  388. }
  389. }
  390. function checkCheckbox(fm,opt)
  391. {
  392. var title=opt.title;
  393. if(title=="")return true;//忽略未定义title的元素
  394. var p=title.lastIndexOf("~");
  395. if(p<0)return true;//忽略title中未定义检查格式的元素
  396. var info=title.substring(0,p);
  397. var format=title.substring(p+1,title.length);
  398. var name=opt.name;
  399. if(name=="")return true;//忽略没有名字的元素
  400. var min=format.match(/min:(\d+)\w*/);
  401. var max=format.match(/\w*max:(\d+)/);
  402. if(typeof(fm.all[name].length)=="undefined")
  403. {
  404. //只有一个同名checkbox
  405. if(min!=null)
  406. {
  407. if(min[1]==1&&!opt.checked)
  408. {
  409. //alert(info+"\n必须选上"+name+"选项");
  410. alert(info+"\n必须选上其中选项");
  411. opt.focus();
  412. return false;
  413. }
  414. }
  415. }
  416. else
  417. {
  418. //一个checkbox组
  419. var checkboxes=fm.all[name];
  420. var check_count=0;
  421. for(var j=0;j<checkboxes.length;j++)
  422. {
  423. if(checkboxes[j].checked)check_count++;
  424. }
  425. if(min!=null)
  426. {
  427. if(min[1]>check_count)
  428. {
  429. //alert(info+"\n"+name+"至少需要选择"+min[1]+"个选项");
  430. alert(info+"\n至少需要选择"+min[1]+"个选项");
  431. opt.focus();
  432. return false;
  433. }
  434. }
  435. if(max!=null)
  436. {
  437. if(max[1]<check_count)
  438. {
  439. //alert(info+"\n"+name+"至多可以选择"+max[1]+"个选项");
  440. alert(info+"\n至多可以选择"+max[1]+"个选项");
  441. opt.focus();
  442. return false;
  443. }
  444. }
  445. }
  446. return true;
  447. }
  448. function checkSelectOne(sel)
  449. {
  450. var title=sel.title;
  451. if(title=="")return true;//忽略未定义title的元素
  452. var p=title.lastIndexOf("~");
  453. if(p<0)return true;//忽略title中未定义检查格式的元素
  454. var info=title.substring(0,p);
  455. var format=title.substring(p+1,title.length);
  456. var name=sel.name;
  457. if(name=="")return true;//忽略没有名字的元素
  458. if(format=="!"&&sel.selectedIndex==0)
  459. {
  460. //alert(info+"\n"+name+"不可以选择第一个个选项");
  461. alert(info+"\n不可以选择第一个个选项");
  462. sel.focus();
  463. return false;
  464. }
  465. return true;
  466. }
  467. function checkSelectMultiple(sel)
  468. {
  469. var title=sel.title;
  470. if(title=="")return true;//忽略未定义title的元素
  471. var p=title.lastIndexOf("~");
  472. if(p<0)return true;//忽略title中未定义检查格式的元素
  473. var info=title.substring(0,p);
  474. var format=title.substring(p+1,title.length);
  475. var name=sel.name;
  476. if(name=="")return true;//忽略没有名字的元素
  477. var min=format.match(/min:(\d+)\w*/);
  478. var max=format.match(/\w*max:(\d+)/);
  479. var select_count=0;
  480. for(var j=0;j<sel.length;j++)
  481. {
  482. if(sel[j].selected)select_count++;
  483. }
  484. if(min!=null)
  485. {
  486. if(min[1]>select_count)
  487. {
  488. //alert(info+"\n"+name+"至少需要选择"+min[1]+"个选项");
  489. alert(info+"\n至少需要选择"+min[1]+"个选项");
  490. sel.focus();
  491. return false;
  492. }
  493. }
  494. if(max!=null)
  495. {
  496. if(max[1]<select_count)
  497. {
  498. //alert(info+"\n"+name+"至多可以选择"+max[1]+"个选项");
  499. alert(info+"\n至多可以选择"+max[1]+"个选项");
  500. sel.focus();
  501. return false;
  502. }
  503. }
  504. return true;
  505. }
  506. /**
  507. * 除去字符串变量s两端的空格。
  508. */
  509. function trim(s)
  510. {
  511. s=s.replace(/^ */,"");
  512. s=s.replace(/ *$/,"");
  513. return s;
  514. }
  515. /**
  516. * 除去字符串表示的数值变量开头的所有的"0"。
  517. * 比如
  518. * trim0("01")将返回"1"
  519. * trim0("1")将返回"1"
  520. * trim0("10")将返回"10"
  521. * trim0("000")将返回"0"
  522. */
  523. function trim0(s)
  524. {
  525. if(s.length==0)return s;
  526. s=s.replace(/^0*/,"");
  527. if(s.length==0)s="0";
  528. return s;
  529. }
  530. /**
  531. * 取得一个form对像所送出时内部送出参数的QueryString
  532. * 形如:
  533. * ?accountName=&userName=&email=&area=0&credit_low=&credit_high=&age_low=&age_high=&userLevel=0
  534. */
  535. function getQueryString(fm)
  536. {
  537. var qStr="";
  538. for(var i=0;i<fm.length;i++)
  539. {
  540. if(!fm[i].disabled)
  541. {
  542. var n=fm[i].name;
  543. if(n==null)continue;
  544. if(n.length==0)continue;
  545. if(fm[i].type=="select-multiple")
  546. {
  547. var _vs=fm[i].options;
  548. for(var _j=0;_j<_vs.length;_j++)
  549. {
  550. var _opt=_vs(_j);
  551. if(_opt.selected)
  552. {
  553. var v=_opt.value;
  554. qStr=qStr+"&"+n+"="+ec(v);
  555. }
  556. }
  557. }
  558. else
  559. {
  560. var v=fm[i].value;
  561. if(fm[i].type=="radio"||fm[i].type=="checkbox")
  562. {
  563. if(!fm[i].checked)continue;
  564. }
  565. qStr=qStr+"&"+n+"="+ec(v);
  566. }
  567. }
  568. }
  569. if(qStr.length>0)qStr="?"+qStr.substr(1);
  570. return qStr;
  571. }
  572. function ec(va)
  573. {
  574. return va.replace(/\n/g,"%0D%0A");
  575. }
  576. function select_img(html_code)
  577. {
  578. var file_name=window.showModalDialog('img_select_index.asp?O_type=Select_Img','','dialogWidth=640px;dialogHeight=480px;help=no;status=no;');
  579. if (file_name!=undefined){
  580. File_Name_Array = file_name.split("|");
  581. try
  582. {
  583. document.all[html_code].value=File_Name_Array[1];
  584. document.all[html_code+'_Preview'].innerHTML='<img src='+File_Name_Array[0]+'/Min_'+File_Name_Array[1]+' border=0><a href=javascript:open_win("'+File_Name_Array[0]+File_Name_Array[1]+'");>放大图片</a><br>';
  585. }
  586. catch(e)
  587. {
  588. document.all[html_code].value=File_Name_Array[0]+File_Name_Array[1];
  589. }
  590. }
  591. }
  592. function select_img_File(html_code)
  593. {
  594. var file_name=window.showModalDialog('img_select_index.asp?O_type=Select_Img','','dialogWidth=640px;dialogHeight=480px;help=no;status=no;');
  595. if (file_name!=undefined){
  596. File_Name_Array = file_name.split("|");
  597. Div_Name="Div_"
  598. for (i=0;i<5;i++) {
  599. intTemp = Math.random()*26;
  600. Div_Name = Div_Name + String.fromCharCode(65+intTemp);
  601. }
  602. ba=''
  603. document.all[html_code].insertAdjacentHTML ( 'beforeBegin' , '<table id="'+Div_Name+'" cellpadding="0" cellspacing="0" border="0"><tr><td><input type="hidden" value="'+File_Name_Array[2]+'" name="Product_Img">'+File_Name_Array[1]+'&nbsp;</td><td ><a href="javascript:;" onclick=javascript:document.all("'+Div_Name+'").outerHTML=ba>移除</a>&nbsp;<a href=javascript:open_win("'+File_Name_Array[0]+File_Name_Array[1]+'");>查看图片</a></td></tr></table>');
  604. }
  605. }
  606. function select_img_down_file(html_code)
  607. {
  608. var file_name=window.showModalDialog('img_select_index.asp?O_type=Select_Img','','dialogWidth=640px;dialogHeight=480px;help=no;status=no;');
  609. if (file_name!=undefined){
  610. File_Name_Array = file_name.split("|");
  611. Div_Name="Div_"
  612. for (i=0;i<5;i++) {
  613. intTemp = Math.random()*26;
  614. Div_Name = Div_Name + String.fromCharCode(65+intTemp);
  615. }
  616. ba=''
  617. document.all[html_code].insertAdjacentHTML ( 'beforeBegin' , '<table id="'+Div_Name+'" cellpadding="0" cellspacing="0" border="0"><tr><td><input type="hidden" value="'+File_Name_Array[2]+'" name="Product_down_file">'+File_Name_Array[1]+'&nbsp;</td><td ><a href="javascript:;" onclick=javascript:document.all("'+Div_Name+'").outerHTML=ba>移除</a>&nbsp;<a href=javascript:open_win("'+File_Name_Array[0]+File_Name_Array[1]+'");>查看档案</a></td></tr></table>');
  618. }
  619. }
  620. function open_win(http_url)
  621. {
  622. if (http_url!='')
  623. {
  624. window.showModalDialog(http_url,'','dialogWidth=665px;dialogHeight=480px;help=no;status=no;');
  625. }
  626. else
  627. {
  628. alert ('请选择文件!');
  629. }
  630. }
  631. function open_win_pay(http_url)
  632. {
  633. if (http_url!='')
  634. {
  635. window.showModalDialog(http_url,'','dialogWidth=820px;dialogHeight=600px;help=no;status=no;');
  636. }
  637. else
  638. {
  639. alert ('请选择文件!');
  640. }
  641. }
  642. function open_win_file(http_url)
  643. {
  644. if (http_url!='')
  645. {
  646. window.open(http_url,'','Width=665,Height=480,resizable=yes');
  647. }
  648. else
  649. {
  650. alert ('请选择文件!');
  651. }
  652. }
  653. function funEditor(html_code)
  654. {
  655. window.open ('/webedit/return.asp?return_name='+html_code,'Rate','width=590,height=380,left=100,top=50,scrollbars=1')
  656. }
  657. function runCode(obj) {
  658. var winname = window.open('', "_blank", '');
  659. winname.document.open('text/html', 'replace');
  660. winname.document.writeln(obj.value);
  661. winname.document.close();
  662. }
  663. function bbimg(o){
  664. var zoom=parseInt(o.style.zoom, 10)||100;zoom+=event.wheelDelta/12;if (zoom>0) o.style.zoom=zoom+'%';
  665. return false;
  666. }
  667. function Format(num,dotLen) {
  668. //将num按小数位为dotLen来进行格式化 如无小数位参数则为2位小数
  669. var dot=0
  670. var num1=0
  671. if (typeof dotLen=="undefined" || dotLen==null )
  672. dot=2
  673. else
  674. dot=dotLen
  675. if (isNaN(parseFloat(num)))
  676. return 0
  677. else
  678. num1=parseFloat(num)
  679. var n1=Math.pow(10,dot)
  680. if (n1==0)
  681. var iValue= Math.round(num1)
  682. else
  683. var iValue= Math.round(num1*n1)/n1
  684. var sValue = iValue.toString();
  685. if (sValue.indexOf(".") == -1)
  686. {
  687. sValue = sValue + ".00";
  688. }
  689. else
  690. {
  691. if (sValue.indexOf(".") == sValue.length - 1)
  692. {
  693. sValue = sValue + "00";
  694. }
  695. else if (sValue.indexOf(".") == sValue.length - 2)
  696. {
  697. sValue = sValue + "0";
  698. }
  699. }
  700. return sValue
  701. }
  702. //this function is used to compare two date,author:rautinee
  703. function compareDate(DateOne,DateTwo)
  704. {
  705. var OneMonth = DateOne.substring(5,DateOne.lastIndexOf ("-"));
  706. var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf ("-")+1);
  707. var OneYear = DateOne.substring(0,DateOne.indexOf ("-"));
  708. var TwoMonth = DateTwo.substring(5,DateTwo.lastIndexOf ("-"));
  709. var TwoDay = DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf ("-")+1);
  710. var TwoYear = DateTwo.substring(0,DateTwo.indexOf ("-"));
  711. if (Date.parse(OneMonth+"/"+OneDay+"/"+OneYear) > Date.parse(TwoMonth+"/"+TwoDay+"/"+TwoYear))
  712. {
  713. return true;
  714. }
  715. else
  716. {
  717. return false;
  718. }
  719. }
  720. function MenuOnMouseOver(obj)
  721. {
  722. obj.className = 'menubar_button';
  723. }
  724. function MenuOnMouseOut(obj)
  725. {
  726. obj.className = 'menubar_button_on';
  727. }
  728. function DelData(DeleteUrl)
  729. {
  730. if (confirm("您确定要删除当前记录吗?\n\n注意:删除后不能恢复!"))
  731. {
  732. window.location.href = DeleteUrl;
  733. }
  734. }
  735. //移动select中选项
  736. function moveUpDown(aim,obj)
  737. {//Obj是需用移动的对象;
  738. //document.my.up.disabled=false;
  739. //document.my.down.disabled=false;
  740. //var Obj=document.my.a;
  741. var Obj = document.getElementById(obj);
  742. if(aim=="up")//如果向上移动;
  743. {
  744. if(Obj.length - Obj.selectedIndex == Obj.length)
  745. {
  746. alert("已是最靠上的一项了,无法再向上移动!");
  747. return;
  748. }
  749. else if(Obj.selectedIndex !=-1)
  750. {
  751. oldSelected=Obj.selectedIndex;
  752. oldText=Obj.options[Obj.selectedIndex].text;
  753. oldValue=Obj.options[Obj.selectedIndex].value;
  754. Obj.options[Obj.selectedIndex]=new Option(Obj.options[Obj.selectedIndex-1].text,Obj.options[Obj.selectedIndex-1].value)
  755. //当前选择的项值与文字等于该选择上一项的值与文字;
  756. Obj.options[oldSelected-1]=new Option(oldText,oldValue);
  757. //原选择项的上一项的值与文字等于原选择的值与文字;
  758. Obj.options[oldSelected-1].selected=true;
  759. //原选择项的上一项被选中状态;
  760. }
  761. else
  762. {
  763. alert("请选择您要移动的一项!");return;
  764. }
  765. }
  766. else if(aim=="down")//向下移动;
  767. {
  768. if(Obj.selectedIndex ==-1 )
  769. {
  770. alert("请选择您要移动的一项!");return;
  771. }
  772. else if(Obj.length - Obj.selectedIndex == 1)
  773. {
  774. alert("已是最靠下的一项了,无法再向下移动!");
  775. return;
  776. }
  777. else
  778. {
  779. current_=Obj.selectedIndex;
  780. current_text=Obj.options[Obj.selectedIndex].text;
  781. current_value=Obj.options[Obj.selectedIndex].value;
  782. Obj.options[Obj.selectedIndex]= new Option(Obj.options[Obj.selectedIndex+1].text,Obj.options[Obj.selectedIndex+1].value);
  783. //新建一项,当前选择项值等于当前选择之下一项值;
  784. //Obj.options[Obj.selectedIndex].text=Obj.options[Obj.selectedIndex+1].text;
  785. //Obj.options[Obj.selectedIndex].value=Obj.options[Obj.selectedIndex+1].value;
  786. //得到当前项下一项的值与文字;
  787. //Obj.options[current_+1]=new Option(current_text,current_value)
  788. Obj.options[current_+1].text=current_text;
  789. Obj.options[current_+1].value=current_value;
  790. //原选择中的项的下一项的文字与值分别等于原选择项的值与文字,以实现替换;
  791. Obj.options[current_+1].selected=true;//选择原选择项的下一项;
  792. }
  793. }
  794. }
  795. //选中给定的列表框中所有的项。如果obj为null,则列表框为自身。
  796. function selectAll(obj) {
  797. if (obj == null) obj = element;
  798. if (obj.tagName != "SELECT") return;
  799. var length = obj.options.length;
  800. for (var i=0;i<length;i++) {
  801. obj.options[i].selected = true;
  802. }
  803. }
  804. function doConfirm(frm)
  805. {
  806. if( confirm('确定要执行操作吗!') ){
  807. return (true);
  808. }else{
  809. return (false);
  810. }
  811. }
  812. function Check_CheckBox(e)
  813. {
  814. e = getEvent();
  815. var xObj = e.srcElement || e.target;
  816. //var xObj = window.event.srcElement;
  817. if (xObj.tagName == "INPUT")
  818. {
  819. if (xObj.type == "checkbox")
  820. {
  821. var xname=xObj.name;
  822. var xBoolean = xObj.checked;
  823. if (xBoolean==true)
  824. xBoolean=false;
  825. else
  826. xBoolean = true;
  827. for (var i=0;i<document.getElementsByName(xname).length;i++)
  828. {
  829. document.getElementsByName(xname)[i].checked = xBoolean;
  830. }
  831. }
  832. }
  833. }
  834. function getEvent()
  835. {
  836. var i = 0;
  837. if(document.all) return window.event;
  838. func = getEvent.caller;
  839. while(func != null)
  840. {
  841. var arg0 = func.arguments[0];
  842. if(arg0)
  843. {
  844. if(arg0.constructor == MouseEvent)
  845. {
  846. return arg0;
  847. }
  848. }
  849. func = func.caller;
  850. }
  851. return null;
  852. }