FormValid.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764
  1. var FormValid = function(frm) {
  2. this.frm = frm;
  3. this.errMsg = new Array();
  4. this.errName = new Array();
  5. // 输入值不能为空
  6. this.required = function(inputObj) {
  7. if (typeof (inputObj) == "undefined" || inputObj.value.trim() == "") {
  8. return false;
  9. }
  10. return true;
  11. };
  12. this.mustOne = function(inputObj) {
  13. var fstObj = inputObj;
  14. if (fstObj != null) {
  15. for (var i = 0; i < fstObj.value.length; i++) {
  16. if (fstObj.value.charAt(i) == "1") {
  17. return true;
  18. }
  19. }
  20. }
  21. return false;
  22. };
  23. this.equal = function(inputObj, formElements) {
  24. var fstObj = inputObj;
  25. var sndObj = formElements[inputObj.getAttribute('eqaulName')];
  26. if (fstObj != null && sndObj != null) {
  27. if (fstObj.value != sndObj.value) {
  28. return false;
  29. }
  30. }
  31. return true;
  32. };
  33. // 数字对比,输入值要大于对比值
  34. this.numgt = function(inputObj, formElements) {
  35. var fstObj = inputObj;
  36. var sndObj = formElements[inputObj.getAttribute('eqaulName')];
  37. if (fstObj != null && sndObj != null && fstObj.value.trim() != ''
  38. && sndObj.value.trim() != '') {
  39. if (fstObj.value - sndObj.value < 0) {
  40. return false;
  41. }
  42. }
  43. return true;
  44. };
  45. // 数字对比,输入值要小于对比值
  46. this.numdt = function(inputObj, formElements) {
  47. var fstObj = inputObj;
  48. var sndObj = formElements[inputObj.getAttribute('eqaulName')];
  49. if (fstObj != null && sndObj != null && fstObj.value.trim() != ''
  50. && sndObj.value.trim() != '') {
  51. if (fstObj.value - sndObj.value > 0) {
  52. return false;
  53. }
  54. }
  55. return true;
  56. };
  57. // 数字对比,输入值不能等于对比值
  58. this.noequal = function(inputObj, formElements) {
  59. var fstObj = inputObj;
  60. var sndObj = formElements[inputObj.getAttribute('eqaulName')];
  61. if (fstObj != null && sndObj != null && fstObj.value.trim() != ''
  62. && sndObj.value.trim() != '') {
  63. if (fstObj.value == sndObj.value) {
  64. return false;
  65. }
  66. }
  67. return true;
  68. };
  69. // 输入值大于对比日期
  70. this.gt = function(inputObj, formElements) {
  71. var fstObj = inputObj;
  72. var sndObj = formElements[inputObj.getAttribute('eqaulName')];
  73. if (fstObj != null && sndObj != null && fstObj.value.trim() != ''
  74. && sndObj.value.trim() != '') {
  75. var i = "";
  76. if (fstObj.value.indexOf('-') > 0) {
  77. i = '-';
  78. } else if (fstObj.value.indexOf('/') > 0) {
  79. i = '/';
  80. } else if (fstObj.value.indexOf('.') > 0) {
  81. i = '.';
  82. }
  83. var fs = fstObj.value.split(i);
  84. var fsYear = fs[0];
  85. var fsMonth = fs[1];
  86. var fsDay = fs[2];
  87. var sn = sndObj.value.split('-');
  88. var snYear = sn[0];
  89. var snMonth = sn[1];
  90. var snDay = sn[2];
  91. if (fsYear - snYear < 0) {
  92. return false;
  93. } else if (fsYear == snYear && fsMonth - snMonth < 0) {
  94. return false;
  95. } else if (fsYear == snYear && fsMonth == snMonth
  96. && fsDay - snDay <= 0) {
  97. return false;
  98. }
  99. }
  100. return true;
  101. };
  102. // 输入值大于等于对比日期
  103. this.dt = function(inputObj, formElements) {
  104. var fstObj = inputObj;
  105. var sndObj = formElements[inputObj.getAttribute('eqaulName1')];
  106. if (fstObj != null && sndObj != null && fstObj.value.trim() != ''
  107. && sndObj.value.trim() != '') {
  108. var i = "";
  109. if (fstObj.value.indexOf('-') > 0) {
  110. i = '-';
  111. } else if (fstObj.value.indexOf('/') > 0) {
  112. i = '/';
  113. } else if (fstObj.value.indexOf('.') > 0) {
  114. i = '.';
  115. } else {
  116. if (fstObj.value - sndObj.value > 0)
  117. return false;
  118. }
  119. var fs = fstObj.value.split(i);
  120. var fsYear = fs[0];
  121. var fsMonth = fs[1];
  122. var fsDay = fs[2];
  123. var sn = sndObj.value.split('-');
  124. var snYear = sn[0];
  125. var snMonth = sn[1];
  126. var snDay = sn[2];
  127. if (fsYear - snYear < 0) {
  128. return false;
  129. } else if (fsYear == snYear && fsMonth - snMonth < 0) {
  130. return false;
  131. } else if (fsYear == snYear && fsMonth == snMonth
  132. && fsDay - snDay < 0) {
  133. return false;
  134. }
  135. }
  136. return true;
  137. };
  138. // 输入值小于对比日期
  139. this.today = function(inputObj, formElements) {
  140. var fstObj = inputObj;
  141. var sndObj = formElements[inputObj.getAttribute('eqaulName2')];
  142. if (fstObj != null && sndObj != null && fstObj.value.trim() != ''
  143. && sndObj.value.trim() != '') {
  144. var i = "";
  145. if (fstObj.value.indexOf('-') > 0) {
  146. i = '-';
  147. } else if (fstObj.value.indexOf('/') > 0) {
  148. i = '/';
  149. } else if (fstObj.value.indexOf('.') > 0) {
  150. i = '.';
  151. }
  152. var fs = fstObj.value.split(i);
  153. var fsYear = fs[0];
  154. var fsMonth = fs[1];
  155. var fsDay = fs[2];
  156. var sn = sndObj.value.split('-');
  157. var snYear = sn[0];
  158. var snMonth = sn[1];
  159. var snDay = sn[2];
  160. if (fsYear - snYear > 0) {
  161. return false;
  162. } else if (fsYear == snYear && fsMonth - snMonth > 0) {
  163. return false;
  164. } else if (fsYear == snYear && fsMonth == snMonth
  165. && fsDay - snDay > 0) {
  166. return false;
  167. }
  168. return true;
  169. }
  170. return true;
  171. };
  172. this.today2 = function(inputObj, formElements) {
  173. var fstObj = inputObj;
  174. var sndObj = formElements[inputObj.getAttribute('eqaulName2')];
  175. if (fstObj != null && sndObj != null && fstObj.value.trim() != ''
  176. && sndObj.value.trim() != '') {
  177. var fs = fstObj.value.split('-');
  178. var fsYear = parseInt(fs[0]);
  179. var fsMonth = parseInt(fs[1]);
  180. var fsDay = parseInt(fs[2]);
  181. var sn = sndObj.value.split('-');
  182. var snYear = parseInt(sn[0]);
  183. var snMonth = parseInt(sn[1]);
  184. var snDay = parseInt(sn[2]);
  185. if (fsYear < snYear) {
  186. return false;
  187. } else if (fsYear == snYear && fsMonth < snMonth) {
  188. return false;
  189. } else if (fsYear == snYear && fsMonth == snMonth && fsDay < snDay) {
  190. return false;
  191. }
  192. }
  193. return true;
  194. };
  195. this.today3 = function(inputObj, formElements) {
  196. var fstObj = inputObj;
  197. var sndObj = formElements[inputObj.getAttribute('eqaulName3')];
  198. if (fstObj != null && sndObj != null && fstObj.value.trim() != ''
  199. && sndObj.value.trim() != '') {
  200. var fs = fstObj.value.split('-');
  201. var fsYear = parseInt(fs[0]);
  202. var fsMonth = parseInt(fs[1]);
  203. var fsDay = parseInt(fs[2]);
  204. var sn = sndObj.value.split('-');
  205. var snYear = parseInt(sn[0]);
  206. var snMonth = parseInt(sn[1]);
  207. var snDay = parseInt(sn[2]);
  208. if (fsYear < snYear) {
  209. return false;
  210. } else if (fsYear == snYear && fsMonth < snMonth) {
  211. return false;
  212. } else if (fsYear == snYear && fsMonth == snMonth && fsDay < snDay) {
  213. return false;
  214. }
  215. }
  216. return true;
  217. };
  218. // 验证是否为固定电话(0570~0580)
  219. this.gddh = function(inputObj) {
  220. var beg = inputObj.value.substring(0, 1);
  221. var beg1 = inputObj.value.substring(1, 2);
  222. var beg2 = inputObj.value.substring(2, 3);
  223. var beg3 = inputObj.value.substring(3, 4);
  224. if (beg == 0 && beg1 == 5 && beg2 == 8 && beg3 == 0) {
  225. return true;
  226. }
  227. if (beg != 0 || beg1 != 5 || beg2 != 7) {
  228. return false;
  229. }
  230. return true;
  231. };
  232. // 判断inputObj的值是否大于等于eqaulDate的值。若小于,则返回false,否则返回true
  233. this.compDate = function(inputObj, formElements) {
  234. var fstObj = inputObj;
  235. var sndObj = formElements[inputObj.getAttribute('eqaulDate')];
  236. if (fstObj != null && sndObj != null && fstObj.value.trim() != ''
  237. && sndObj.value.trim() != '') {
  238. var fs = fstObj.value.split('-');
  239. var fsYear = parseInt(fs[0]);
  240. var fsMonth = parseFloat(fs[1]);
  241. var fsDay = parseFloat(fs[2]);
  242. var sn = sndObj.value.split('-');
  243. var snYear = parseInt(sn[0]);
  244. var snMonth = parseFloat(sn[1]);
  245. var snDay = parseFloat(sn[2]);
  246. if (fsYear < snYear) {
  247. return false;
  248. } else if (fsYear == snYear && fsMonth < snMonth) {
  249. return false;
  250. } else if (fsYear == snYear && fsMonth == snMonth && fsDay < snDay) {
  251. return false;
  252. }
  253. }
  254. return true;
  255. };
  256. this.compDateGt = function(inputObj, formElements) {
  257. var fstObj = inputObj;
  258. var sndObj = formElements[inputObj.getAttribute('eqaulDate')];
  259. alert(sndObj.value);
  260. if (fstObj != null && sndObj != null && fstObj.value.trim() != ''
  261. && sndObj.value.trim() != '') {
  262. var fs = fstObj.value.split('-');
  263. var fsYear = parseInt(fs[0]);
  264. var fsMonth = parseInt(fs[1]);
  265. var fsDay = parseInt(fs[2]);
  266. var sn = sndObj.value.split('-');
  267. var snYear = parseInt(sn[0]);
  268. var snMonth = parseInt(sn[1]);
  269. var snDay = parseInt(sn[2]);
  270. if (fsYear > snYear) {
  271. return false;
  272. } else if (fsYear == snYear && fsMonth > snMonth) {
  273. return false;
  274. } else if (fsYear == snYear && fsMonth == snMonth && fsDay > snDay) {
  275. return false;
  276. }
  277. }
  278. return true;
  279. };
  280. this.compare = function(inputObj, formElements) {
  281. var fstObj = inputObj;
  282. var sndObj = formElements[inputObj.getAttribute('objectName')];
  283. if (fstObj != null && sndObj != null && fstObj.value.trim() != ''
  284. && sndObj.value.trim() != '') {
  285. if (!(eval(parseFloat(fstObj.value)
  286. + inputObj.getAttribute('operate')
  287. + parseFloat(sndObj.value)))) {
  288. return false;
  289. }
  290. }
  291. return true;
  292. };
  293. this.limit = function(inputObj) {
  294. var len = inputObj.value.length;
  295. if (len) {
  296. var minv = parseInt(inputObj.getAttribute('min'));
  297. var maxv = parseInt(inputObj.getAttribute('max'));
  298. minv = minv || 0;
  299. maxv = maxv || Number.MAX_VALUE;
  300. return minv <= len && len <= maxv;
  301. }
  302. return true;
  303. };
  304. this.range = function(inputObj) {
  305. var val = parseInt(inputObj.value);
  306. if (inputObj.value) {
  307. var minv = parseInt(inputObj.getAttribute('min'));
  308. var maxv = parseInt(inputObj.getAttribute('max'));
  309. minv = minv || 0;
  310. maxv = maxv || Number.MAX_VALUE;
  311. return minv <= val && val <= maxv;
  312. }
  313. return true;
  314. };
  315. this.requireChecked = function(inputObj) {
  316. var minv = parseInt(inputObj.getAttribute('min'));
  317. var maxv = parseInt(inputObj.getAttribute('max'));
  318. minv = minv || 1;
  319. maxv = maxv || Number.MAX_VALUE;
  320. var checked = 0;
  321. var groups = document.getElementsByName(inputObj.name);
  322. for (var i = 0; i < groups.length; i++) {
  323. if (groups[i].checked)
  324. checked++;
  325. }
  326. return minv <= checked && checked <= maxv;
  327. };
  328. this.filter = function(inputObj) {
  329. var value = inputObj.value;
  330. var allow = inputObj.getAttribute('allow');
  331. if (value.trim()) {
  332. return new RegExp("^.+\.(?=EXT)(EXT)$".replace(/EXT/g, allow.split(
  333. /\s*,\s*/).join("|")), "gi").test(value);
  334. }
  335. return true;
  336. };
  337. this.isNo = function(inputObj) {
  338. var value = inputObj.value;
  339. var noValue = inputObj.getAttribute('noValue');
  340. return value != noValue;
  341. };
  342. this.isTelephone = function(inputObj) {
  343. inputObj.value = inputObj.value.trim();
  344. if (inputObj.value == '') {
  345. return true;
  346. } else {
  347. if (!RegExps.isMobile.test(inputObj.value)
  348. && !RegExps.isPhone.test(inputObj.value)) {
  349. return false;
  350. }
  351. }
  352. return true;
  353. };
  354. this.checkReg = function(inputObj, reg, msg) {
  355. inputObj.value = inputObj.value.trim();
  356. if (inputObj.value == '') {
  357. return true;
  358. } else {
  359. return reg.test(inputObj.value);
  360. }
  361. };
  362. this.passed = function(type) {
  363. if (type == "modile") {
  364. $("div.error").remove();
  365. } else {
  366. if (document.getElementById("htmlError")) {
  367. $("div#htmlError").empty(); // 进入首先清除div内的提醒信息
  368. }
  369. }
  370. if (this.errMsg.length > 0) {
  371. if (type == "modile") {
  372. FormValid.showError(this.errMsg, this.errName);
  373. } else {
  374. FormValid.showError(this.errMsg, this.errName, this.frm.name);
  375. }
  376. if (this.errName[0].indexOf('[') == -1) {
  377. frt = document.getElementsByName(this.errName[0])[0];
  378. if (frt.type == 'text' || frt.type == 'password') {
  379. // frt.focus();
  380. }
  381. }
  382. return false;
  383. } else {
  384. return FormValid.succeed();
  385. }
  386. };
  387. this.addErrorMsg = function(name, str) {
  388. this.errMsg.push(str);
  389. this.errName.push(name);
  390. };
  391. this.addAllName = function(name) {
  392. FormValid.allName.push(name);
  393. };
  394. };
  395. FormValid.allName = new Array();
  396. FormValid.showError = function(errMsg) {
  397. var msg = "";
  398. for (var i = 0; i < errMsg.length; i++) {
  399. msg += "- " + errMsg[i] + "\n";
  400. }
  401. alert(msg);
  402. };
  403. FormValid.showError = function(errMsg, name, formname) {
  404. if (typeof (formname) != 'undefined') {
  405. for (key in errMsg) {
  406. var errorid = [ "errorMsg", key ].join("");
  407. var errorname = "formError";
  408. var error = '&nbsp;<a href="#" id="'
  409. + errorid
  410. + '" name="'
  411. + errorname
  412. + '" style="width:400px; color:#FF0000" align="left" onclick="pitchOn(this.id,'
  413. + formname + ');return false;">*' + errMsg[key]
  414. + '</a><br/>';
  415. $("div#htmlError").append(error);
  416. if (key == 0) {
  417. $('#' + errorid).click();
  418. }
  419. }
  420. } else {
  421. for (var i = 0; i < errMsg.length; i++) {
  422. var error = "<div class='error'><span style='width:10px;'></span><span style='color:#FF0000;font-size:12px;'>" + errMsg[i] +"</span></div>";
  423. $("div").find("[name='" + name[i] + "']").parent().after(error);
  424. }
  425. }
  426. };
  427. FormValid.succeed = function() {
  428. return true;
  429. };
  430. function checklen(inputObj) {
  431. var lenE = inputObj.value.length;
  432. var lenC = 0;
  433. var CJK = inputObj.value.match(/[\u4E00-\u9FA5\uF900-\uFA2D]/g);
  434. if (CJK != null)
  435. lenC += CJK.length;
  436. tno.innerText = inputObj.maxlength - lenC - lenE;
  437. if (tno.innerText < 0) {
  438. var tmp = 0;
  439. var cut = inputObj.value.substring(0, inputObj.maxlength);
  440. for (var i = 0; i < cut.length; i++) {
  441. tmp += /[\u4E00-\u9FA5\uF900-\uFA2D]/.test(cut.charAt(i)) ? 2 : 1;
  442. if (tmp > inputObj.maxlength)
  443. break;
  444. }
  445. inputObj.value = cut.substring(0, i);
  446. }
  447. }
  448. function goNextText(field, event) {
  449. var keyCode = event.keyCode ? event.keyCode : event.which ? event.which
  450. : event.charCode;
  451. if (keyCode == 13) {
  452. var i;
  453. for (i = 0; i < field.form.elements.length; i++)
  454. if (field == field.form.elements[i])
  455. break;
  456. i = (i + 1) % field.form.elements.length;
  457. field.form.elements[i].focus();
  458. return false;
  459. } else {
  460. return true;
  461. }
  462. }
  463. function pitchOn(id, frm) {
  464. document.body.focus();
  465. var pitch = document.getElementById(id);
  466. var i = pitch.innerHTML.substring(1, pitch.innerHTML.length);
  467. var text = frm.elements;
  468. var dealId = "";
  469. var dealName = "";
  470. for (var x = 0; x < text.length; x++) {
  471. if (text[x].getAttribute("errmsg") != undefined) {
  472. var array = text[x].getAttribute("errmsg").split('|');
  473. if (array.length > 0) {
  474. for (var j = 0; j < array.length; j++) {
  475. if (array[j] == i) {
  476. if (frm.elements[x].id != 'undefined')
  477. dealId = frm.elements[x].id;
  478. if (frm.elements[x].name != 'undefined')
  479. dealName = frm.elements[x].name;
  480. }
  481. }
  482. }
  483. }
  484. }
  485. if (dealId != "") {
  486. if (document.getElementById(dealId).type != "hidden") {
  487. document.getElementById(dealId).focus();
  488. }
  489. }
  490. if (dealId == "" && dealName != "") {
  491. if (dealName != "") {
  492. document.getElementsByName(dealName)[0].focus();
  493. }
  494. }
  495. }
  496. function validator(frm, type) {
  497. var formElements = frm.elements;
  498. var fv = new FormValid(frm);
  499. FormValid.allName = new Array();
  500. for (var i = 0; i < formElements.length; i++) {
  501. if (formElements[i].disabled == true)
  502. continue;
  503. var msgs = fvCheck(formElements[i], fv, formElements);
  504. if (msgs.length > 0) {
  505. for (n in msgs) {
  506. fv.addErrorMsg(formElements[i].name, msgs[n]);
  507. }
  508. }
  509. }
  510. return fv.passed(type);
  511. }
  512. function fvCheck(e, fv, formElements) {
  513. var validType = e.getAttribute('valid');
  514. var errorMsg = e.getAttribute('errmsg');
  515. if (!errorMsg) {
  516. errorMsg = '';
  517. }
  518. if (validType == null)
  519. return [];
  520. fv.addAllName(e.name);
  521. var vts = validType.split('|');
  522. var ems = errorMsg.split('|');
  523. var r = [];
  524. for (var j = 0; j < vts.length; j++) {
  525. var curValidType = vts[j];
  526. var curErrorMsg = ems[j];
  527. var validResult;
  528. switch (curValidType) {
  529. case 'isAreaCode': // 验证区号
  530. case 'isPositive': // 验证是否是正数
  531. case 'isPosInt': // 验证是否是正整数
  532. case 'isNumber':
  533. case 'isEmail':
  534. case 'isPhone':
  535. case 'isMobile':
  536. case 'isIdCard':
  537. case 'isMoney':
  538. case 'isZip':
  539. case 'isQQ':
  540. case 'isInt':
  541. case 'isEnglish':
  542. case 'isChinese':
  543. case 'isUrl':
  544. case 'isDate':
  545. case 'isDateOnlyYandM':
  546. case 'isTime':
  547. case 'isTwoPointInt':
  548. case 'isPostcode':
  549. case 'isNotNegativeFloat':
  550. case 'isNotNegativeInt':
  551. validResult = fv.checkReg(e, RegExps[curValidType], curErrorMsg);
  552. break;
  553. case 'regexp':
  554. validResult = fv.checkReg(e, new RegExp(e.getAttribute('regexp'),
  555. "g"), curErrorMsg);
  556. break;
  557. case 'custom':
  558. validResult = eval(e.getAttribute('custom') + '(e,formElements)');
  559. break;
  560. default:
  561. validResult = eval('fv.' + curValidType + '(e,formElements)');
  562. break;
  563. }
  564. if (!validResult)
  565. r.push(curErrorMsg);
  566. }
  567. return r;
  568. }
  569. String.prototype.trim = function() {
  570. return this.replace(/^\s*|\s*$/g, "");
  571. };
  572. var RegExps = function() {
  573. };
  574. RegExps.isAreaCode = /0\d{2,3}/;
  575. RegExps.isNumber = /^[-\+]?\d+(\.\d+)?$/;
  576. RegExps.isEmail = /([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/;
  577. //RegExps.isPhone = /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/;
  578. RegExps.isPhone = /^(\d{4}[-]?)?\d{8}$/;
  579. RegExps.isMobile = /^1[0-9][0-9]\d{8}$/;
  580. RegExps.isIdCard = /(^\d{15}$)|(^\d{17}[0-9Xx]$)/;
  581. RegExps.isMoney = /^\d+(\.\d+)?$/;
  582. RegExps.isZip = /^[1-9]\d{5}$/;
  583. RegExps.isQQ = /^[1-9]\d{4,10}$/;
  584. RegExps.isInt = /^[-\+]?\d+$/;
  585. RegExps.isEnglish = /^[A-Za-z]+$/;
  586. RegExps.isChinese = /^[\u0391-\uFFE5]+$/;
  587. RegExps.isUrl = /^http[s]?:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;
  588. RegExps.isDate = /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29))$/;
  589. RegExps.isTime = /^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}$/;
  590. RegExps.isDateOnlyYandM = /(^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29))$)|(^([0-9]{4}(\-){1}(([0]?[1-9]{1})|([1-9]{1})|([1]{1}[0-2]{1})))$)/;
  591. RegExps.isTwoPointInt = /^\d+(\.\d{1,2})?$/;
  592. RegExps.isPositive = /^(0|([1-9]\d*))(\.\d+)?$/;
  593. RegExps.isPosInt = /^[0-9]*[1-9][0-9]*$/;
  594. RegExps.isPostcode = /^[1-9][0-9]{5}$/;
  595. RegExps.isNotNegativeFloat = /^\d+(\.\d+)?$/; //匹配非负浮点数(正浮点数 + 0)
  596. RegExps.isNotNegativeInt = /^\d+$/; //匹配非负整数(正整数 + 0)
  597. function isEmail(s) {
  598. if (s.length > 100)
  599. return false;
  600. var regu = "^(([0-9a-zA-Z]+)|([0-9a-zA-Z]+[_.0-9a-zA-Z-]*[_.0-9a-zA-Z]+))@([a-zA-Z0-9-]+[.])+([a-zA-Z]{2}|net|NET|com|COM|gov|GOV|mil|MIL|org|ORG|edu|EDU|int|INT)$";
  601. var re = new RegExp(regu);
  602. if (s.search(re) != -1)
  603. return true;
  604. else
  605. return false;
  606. }
  607. // 验证只能输入数字
  608. function KeyPress(objTR) {
  609. var key = event.keyCode;
  610. if ((key < 48 || key > 57)) {
  611. event.keyCode = 0;
  612. }
  613. }
  614. // 限制只能输入数字和"-","."
  615. function numKeyPress(objTR) {
  616. var key = event.keyCode;
  617. if (!(((key >= 48) && (key <= 57)) || (key == 13) || (key == 46) || (key == 45))) {
  618. event.keyCode = 0;
  619. }
  620. }
  621. // 限制只能输入数字和一个"."
  622. function onlyNumAndDot(obj) {
  623. var textval = obj.value;
  624. var key = event.keyCode;
  625. if (!(((key >= 48) && (key <= 57)) || (key == 46))) {
  626. event.keyCode = 0;
  627. } else {
  628. if (!((key >= 48) && (key <= 57)) && textval.indexOf(".") > -1) {
  629. event.keyCode = 0;
  630. }
  631. }
  632. }
  633. function doKeypress(obj) {
  634. maxLength = obj.maxlength;
  635. if (!isNaN(maxLength)) {
  636. maxLength = parseInt(maxLength);
  637. var oTR = obj.document.selection.createRange();
  638. if (oTR.text.length >= 1)
  639. event.returnValue = true;
  640. else if (obj.value.length > maxLength - 1)
  641. event.returnValue = false;
  642. }
  643. }
  644. function doKeydown(obj) {
  645. maxLength = obj.maxlength;
  646. setTimeout(
  647. function() {
  648. maxLength = parseInt(maxLength);
  649. if (!isNaN(maxLength)) {
  650. if (obj.value.length > maxLength - 1) {
  651. var oTR = window.document.selection.createRange();
  652. oTR.moveStart("character", -1
  653. * (obj.value.length - maxLength));
  654. oTR.text = "";
  655. }
  656. }
  657. }, 1);
  658. }
  659. function doBeforePaste(obj) {
  660. maxLength = obj.maxlength;
  661. if (!isNaN(maxLength))
  662. event.returnValue = false;
  663. }
  664. function doPaste(obj) {
  665. maxLength = obj.maxlength;
  666. if (!isNaN(maxLength)) {
  667. event.returnValue = false;
  668. maxLength = parseInt(maxLength);
  669. var oTR = obj.document.selection.createRange();
  670. var iInsertLength = maxLength - obj.value.length + oTR.text.length;
  671. var sData = window.clipboardData.getData("Text").substr(0,
  672. iInsertLength);
  673. oTR.text = sData;
  674. }
  675. }
  676. function checkESC(va) {
  677. var variable = va;
  678. var str = variable;
  679. if (variable.indexOf("<") > 0) {
  680. str = variable.replace(/\</g, "&lt;");
  681. }
  682. if (variable.indexOf(">") > 0) {
  683. str = variable.replace(/\>/g, "&gt;");
  684. }
  685. if (variable.indexOf("&") > 0) {
  686. str = variable.replace(/\&/g, "&amp;");
  687. }
  688. if (variable.indexOf("\"") > 0) {
  689. str = variable.replace(/\"/g, "&quot;");
  690. }
  691. if (variable.indexOf("\'") > 0) {
  692. str = variable.replace(/\'/g, "&acute;");
  693. }
  694. return str;
  695. }
  696. /**
  697. * 检查message的长度是否超过total,若超过,则截取并返回message的0~total的字串
  698. *
  699. * @param message
  700. * @param total
  701. */
  702. function countTextAreaLength(message, total) {
  703. var max;
  704. max = total;
  705. if (message.value.length > max) {
  706. message.value = message.value.substring(0, max);
  707. }
  708. }