总结所有的javascript验证方法大全

心已赠人 2022-08-12 00:12 128阅读 0赞
  1. //===========================================================================
  2. //通用JavaScript说明:
  3. //本文件存储通用的一些页面输入框内容的判断方法
  4. //方法名:大部分以check开始
  5. //参数名:elem表示一个输入框element
  6. // field表示输入框的中文标题名,一般是显示在提示窗口中使用
  7. // frm表示页面中的表单
  8. //注意:希望以后添加到此文件中的方法也要统一遵守上面的规则
  9. //===========================================================================
  10. //1、检查输入框中是否为空
  11. //2、检查表单内所有字段是否为空
  12. //3、判断输入框中只能输入正整数(不包括零)
  13. //4、判断输入框中只能输入非负整数(包括零)
  14. //5、判断输入框中只能输入非负数数值型数据(包括小数)
  15. //6、判断输入框中的数值是否在指定范围内(如:0-100),不包括上下界值
  16. //6-1、判断输入框中的数值是否在指定范围内(如:0-100),包括上下界值0和100
  17. //7、判断输入框中只能输入字母
  18. //8、判定指定的字段长度是否超过了指定的最大长度,主要是校验汉字的长度
  19. //9、验证日期的前后关系
  20. //10、判断学年的格式(格式为:2005-2006)
  21. //11、去除前后的空格
  22. //12、checkbox全选
  23. //13、是否有checkbox被选择,用于有选择的删除
  24. //14、使入域的值在提交之产重定向到其它输入域
  25. //15、打开新的窗口
  26. //16、校验日期格式(YYYY-MM-DD格式)
  27. //17、校验身份证号是否有效
  28. //18、判断是否为空
  29. //19、判断输入框中只能输入字母数字
  30. //20、打开模态窗口
  31. //21、手机号码验证
  32. //22、计算输入字符数
  33. //23、Y/N数据验证,对于小写的y/n则自动转换为大写
  34. //24、0/1数据验证
  35. //25、http://IP:PORT格式地址验证,可以未空
  36. //26、MO/TO数据验证
  37. //27、固定电话号码验证
  38. //28、是否大于100000(十万)
  39. //29、校验Email地址是否有效
  40. //30、根据身份证获取生日
  41. //31、根据身份证获取性别
  42. //32、判断输入框中的数值是否在指定范围内(如:0-100),包含最大值,最小值
  43. //33、判断输入框中只能输入字母
  44. //34、1/2数据验证
  45. //35、用户密码安全等级判断
  46. //36、1/2/3数据验证
  47. //37、邮政编码的验证
  48. //38、web地址格式验证(http://IP格式 或 http://域名格式)
  49. //39、1或1,2或1,2,3,4,5,6数据格式验证(即:用“,”号分隔的1——6数字验证)
  50. //40、验证输入域中不能有<>~!@#$%&|非法字符
  51. //41、表单中所有输入框的内容去掉前后空格
  52. //===========================================================================
  53. /**
  54. * 1、检查输入框中是否为空
  55. * elem 输入框
  56. * field 输入框的中文名称
  57. */
  58. function checkElement(elem,field){
  59. if(trim(elem.value)==''){
  60. addFieldErrorWithObject(elem,field+"不能为空,请输入!");
  61. return false;
  62. }
  63. return true;
  64. }
  65. /**
  66. * 2、检查表单内所有字段是否为空
  67. */
  68. function checkAllForm(frm){
  69. var len=frm.elements.length;
  70. for(var i=0;i<len;i++)
  71. {
  72. if(frm.elements[i].alt=='key'){
  73. if(trim(frm.elements[i].value)==''){
  74. if(frm.elements[i].type=='text'){
  75. alert("请输入"+frm.elements[i].id);
  76. frm.elements[i].select();
  77. }else{
  78. alert("请选择"+frm.elements[i].id);
  79. frm.elements[i].focus();
  80. }
  81. return false;
  82. }
  83. }
  84. }
  85. return true;
  86. }
  87. /**
  88. * 3、判断输入框中只能输入正整数(不包括零)
  89. */
  90. function checkPlusInt(elem,field){
  91. if(!checkElement(elem,field)) return false;
  92. val=elem.value;
  93. //var pattern=/[^1-9]/;
  94. var pattern=/[^0-9]/;
  95. if(pattern.test(val) || val.slice(0,1)=="0"){
  96. addFieldErrorWithObject(elem,field+"只能输入非零的整数!");
  97. elem.value = '';
  98. elem.focus();
  99. return false;
  100. }
  101. return true;
  102. }
  103. /**
  104. * 4、判断输入框中只能输入非负整数(包括零)
  105. */
  106. function checkInteger(elem,field){
  107. if(!checkElement(elem,field)) return false;
  108. val=elem.value;
  109. var pattern=/[^0-9]/;
  110. if(pattern.test(val)){
  111. addFieldErrorWithObject(elem,field+"只能输入非负整数!");
  112. elem.focus();
  113. return false;
  114. }
  115. return true;
  116. }
  117. /**
  118. * 5、判断输入框中只能输入非负数数值型数据(包括小数)
  119. */
  120. function checkNum(elem,field){
  121. if(!checkElement(elem,field)) return false;
  122. val=elem.value;
  123. var pattern=/[^0-9.]/;
  124. if(pattern.test(val)){
  125. addFieldErrorWithObject(elem,field+"只能输入非负数值型数据!");
  126. elem.value = '';
  127. elem.focus();
  128. return false;
  129. }
  130. return true;
  131. }
  132. /**
  133. * 6、判断输入框中的数值是否在指定范围内(如:0-100),不包括上下界值
  134. * min:最小值
  135. * max:最大值
  136. */
  137. function checkNumRange(elem,field,min,max){
  138. val = parseInt(elem.value);
  139. if(val<=min || val>=max){
  140. addFieldError(elem.id,field+"只能是"+min+"~"+max+"范围内的数值!");
  141. elem.focus();
  142. return false;
  143. }
  144. return true;
  145. }
  146. /**
  147. * 6-1、判断输入框中的数值是否在指定范围内(如:0-100),包括上下界值
  148. * min:最小值
  149. * max:最大值
  150. */
  151. function checkNumRange2(elem, field, min, max){
  152. val = parseInt(elem.value);
  153. if(val<min || val>max){
  154. addFieldError(elem.id, field+"只能是"+min+"~"+max+"范围内的数值!");
  155. elem.focus();
  156. return false;
  157. }
  158. return true;
  159. }
  160. /**
  161. * 7、判断输入框中只能输入字母
  162. */
  163. function checkCharacters(elem,field){
  164. val=elem.value;
  165. var pattern=/\W/g;
  166. if(pattern.test(val)){
  167. alert(field+"只能为A-Z a-z 0-9等字符!");
  168. elem.focus();
  169. return false;
  170. }
  171. pattern=/_/g;
  172. if(pattern.test(val)){
  173. alert(field+"只能为A-Z a-z 0-9等字符!");
  174. elem.focus();
  175. return false;
  176. }
  177. }
  178. function checkCharacters2(elem,field){
  179. var flag=false;
  180. var str=/[a-z]|[A-Z]/;
  181. var str1=trim(elem.value).length;
  182. for(var i=0;i<str1;i++){
  183. if(!str.test(trim(elem.value).charAt(i))){
  184. flag=true;
  185. break;
  186. }
  187. }
  188. if(flag==true){
  189. addFieldErrorWithObject(elem,field+"只能为字母!");
  190. elem.focus();
  191. return false;
  192. }else{
  193. return true;
  194. }
  195. }
  196. /**
  197. * 8、判定指定的字段长度是否超过了指定的最大长度,主要是校验汉字的长度
  198. * element 指定字段
  199. * maxlen 允许最大长度
  200. * field 标题(字段名)
  201. */
  202. function checkOverLen(elem,maxlen,field){
  203. var len;
  204. var i;
  205. len = 0;
  206. var val = trim(elem.value);
  207. var maxlength = parseInt(maxlen);
  208. var length = val.length;
  209. for (i=0;i<length;i++){
  210. if (val.charCodeAt(i)>255)
  211. len+=2;
  212. else
  213. len++;
  214. }
  215. if(len>maxlength){
  216. addFieldErrorWithObject(elem,field+"长度超过范围,允许最大长度为"+maxlength+"个字符");
  217. elem.focus();
  218. return false;
  219. }
  220. return true;
  221. }
  222. /**
  223. * 9、验证日期的前后关系
  224. * elem1 前面的日期
  225. * elem2 后面的日期
  226. */
  227. function checkAfterDate(elem1,elem2){
  228. if(elem1.value!="" && elem2.value!=""){
  229. var date1 ;
  230. var date2 ;
  231. try{
  232. date1 = elem1.value.split('-');
  233. date2 =elem2.value.split('-');
  234. }catch(e){
  235. date1 = elem1.split('-');
  236. date2 = elem2.split('-');
  237. }
  238. for(var i=0;i<Math.min(date1.length,date2.length);i++){
  239. if(date1[i].length==1)
  240. date1[i]='0'+date1[i];
  241. if(date2[i].length==1)
  242. date2[i]='0'+date2[i];
  243. }
  244. for(var i=0;i<date1.length;i++){
  245. if(date1[i]>date2[i]){
  246. alert("时间前后不合逻辑,请更正!");
  247. if(elem1.type!='hidden')
  248. elem1.focus();
  249. else {
  250. try{
  251. elem2.focus();
  252. }catch(e){}
  253. }
  254. return false;
  255. }
  256. if(date1[i]<date2[i]){
  257. i=date1.length;
  258. }
  259. }
  260. }
  261. return true;
  262. }
  263. /**
  264. * 9-1、验证日期的前后关系(传入提示信息)
  265. * elem1 前面的日期
  266. * elem2 后面的日期
  267. * msg 验证通不过时的提示信息
  268. */
  269. function checkAfterDateWithMsg(elem1,elem2,msg){
  270. if(elem1.value!="" && elem2.value!=""){
  271. var date1 ;
  272. var date2 ;
  273. try{
  274. date1 = elem1.value.split('-');
  275. date2 =elem2.value.split('-');
  276. }catch(e){
  277. date1 = elem1.split('-');
  278. date2 = elem2.split('-');
  279. }
  280. for(var i=0;i<Math.min(date1.length,date2.length);i++){
  281. if(date1[i].length==1)
  282. date1[i]='0'+date1[i];
  283. if(date2[i].length==1)
  284. date2[i]='0'+date2[i];
  285. }
  286. for(var i=0;i<date1.length;i++){
  287. if(date1[i]>date2[i]){
  288. alert(msg);
  289. if(elem1.type!='hidden')
  290. elem1.focus();
  291. else {
  292. try{
  293. elem2.focus();
  294. }catch(e){}
  295. }
  296. return false;
  297. }
  298. if(date1[i]<date2[i]){
  299. i=date1.length;
  300. }
  301. }
  302. }
  303. return true;
  304. }
  305. /**
  306. * 9-2、比较日期的大小
  307. * elem1 前面的日期(string)
  308. * elem2 后面的日期(string)
  309. * elem1>elem2 return 1;elem1==elem2 return 0;elem1<elem2 return -1
  310. */
  311. function compareDate(elem1,elem2){
  312. if(elem1.value!="" && elem2.value!=""){
  313. var date1 ;
  314. var date2 ;
  315. try{
  316. date1 = elem1.value.split('-');
  317. date2 =elem2.value.split('-');
  318. }catch(e){
  319. date1 = elem1.split('-');
  320. date2 = elem2.split('-');
  321. }
  322. if(eval(date1[0])>eval(date2[0])){
  323. return 1;
  324. }else if(eval(date1[0])==eval(date2[0])){
  325. if(eval(date1[1])>eval(date2[1])){
  326. return 1;
  327. }else if(eval(date1[1])==eval(date2[1])){
  328. if(eval(date1[2])>eval(date2[2])){
  329. return 1;
  330. }else if(eval(date1[2])==eval(date2[2])){
  331. return 0;
  332. }else{
  333. return -1;
  334. }
  335. }else{
  336. return -1;
  337. }
  338. }else{
  339. return -1;
  340. }
  341. }
  342. }
  343. /**
  344. * 10、判断学年的格式(格式为:2005-2006)
  345. */
  346. function checkTermyear(elem){
  347. var termyear = trim(elem.value);
  348. if(termyear.length!=9){
  349. alert("学年必须为9位数据");
  350. elem.select();
  351. return false;
  352. }
  353. if(termyear.charAt(4)!='-'){
  354. alert("格式错误,正确格式示例:2003-2004");
  355. elem.select();
  356. return false;
  357. }
  358. if(parseInt(termyear.substring(0,4))!=(parseInt(termyear.substring(5,9))-1)){
  359. alert("学年信息错误!");
  360. elem.select();
  361. return false;
  362. }
  363. return true;
  364. }
  365. /**
  366. * 11、去除前后的空格
  367. */
  368. function trim(str) {
  369. if(str !='' && str != null){
  370. while(str.charAt(0)==' ') str=str.substring(1,str.length); //trim leading spaces
  371. while(str.charAt(str.length-1)==' ') str=str.substring(0,str.length-1); //trim trailing spaces
  372. }
  373. return str;
  374. }
  375. /**
  376. * 12、checkbox全选
  377. * frm 包含删除checkbox的表单
  378. * elemCheckboxAll 全选的checkbox
  379. * elemCheckbox 每行的checkbox的name值,字符串
  380. */
  381. function selectAllCheckbox(frm,elemCheckboxAll,elemCheckbox){
  382. var length = frm.elements.length;
  383. if (elemCheckboxAll.checked==true){
  384. for(i=0;i<length;i++){
  385. if((frm.elements[i].name ==elemCheckbox) && (frm.elements[i].disabled==false)){
  386. frm.elements[i].checked=true;
  387. }
  388. }
  389. }else{
  390. for(i=0;i<length;i++){
  391. if((frm.elements[i].name ==elemCheckbox) && (frm.elements[i].disabled==false)){
  392. frm.elements[i].checked=false;
  393. }
  394. }
  395. }
  396. }
  397. /**
  398. * 13、是否有checkbox被选择,用于有选择的删除
  399. * 各参数的意义参看上面的函数selectAllCheckbox
  400. */
  401. function checkSelectCheckbox(frm,elemCheckbox){
  402. var flag = false;
  403. var length = frm.elements.length;
  404. for(i=0;i<length;i++){
  405. if(frm.elements[i].name == elemCheckbox && frm.elements[i].checked){
  406. flag = true;
  407. break;
  408. }
  409. }
  410. if(!flag){
  411. alert("没有行被选择,请先选择!");
  412. }
  413. return flag;
  414. }
  415. /**
  416. * 14、使入域的值在提交之产重定向到其它输入域
  417. * 一般用于在表单提交之前,把列表控件中checkbox选中的值,传递到隐藏域字段(也可以是非隐藏的input域)
  418. * 通过隐藏域字段,把选中的值提交到action。提交到action的值形式:id,id,
  419. * @param formObj: 包含列表checkbox的表单对象
  420. * @param checkboxName: 列表checkbox的name值
  421. * @param hiddenObj: 隐藏域字段对象(也可以是非隐藏的input域字段对象)
  422. * 具体调用该方法的示例:checkboxValueToHidden (document.form,'userid',document.form1.selectedUserids)
  423. */
  424. function checkboxValueToHidden(formObj,checkboxName,hiddenObj){
  425. hiddenObj.value = "";
  426. var length = formObj.elements.length;
  427. for(var i=0;i<length;i++){
  428. if((formObj.elements[i].type == "checkbox") && (formObj.elements[i].name == checkboxName)
  429. && (formObj.elements[i].checked)){
  430. hiddenObj.value = hiddenObj.value + formObj.elements[i].value + ",";
  431. }
  432. }
  433. }
  434. /**
  435. * 15、打开新的窗口
  436. * url:窗口路径
  437. * winName: 窗口的名字
  438. * width:窗口的宽度
  439. * height: 窗口高度
  440. */
  441. function openwindow( url, winName, width, height, resizable)
  442. {
  443. xposition=0; yposition=0;
  444. if ((parseInt(navigator.appVersion) >= 4 ))
  445. {
  446. xposition = (screen.width - width) / 2;
  447. yposition = (screen.height - height) / 2;
  448. }
  449. theproperty= "width=" + width + ","
  450. + "height=" + height + ","
  451. + "location=0,"
  452. + "menubar=0,"
  453. if (resizable){
  454. theproperty +="resizable=" + resizable + ",";
  455. }
  456. else{
  457. theproperty +="resizable=1";
  458. }
  459. theproperty = theproperty
  460. + "scrollbars=0,"
  461. + "status=0,"
  462. + "titlebar=0,"
  463. + "toolbar=0,"
  464. + "hotkeys=0,"
  465. + "screenx=" + xposition + "," //Netscape
  466. + "screeny=" + yposition + "," //Netscape
  467. + "left=" + xposition + "," //IE
  468. + "top=" + yposition; //IE
  469. newwin=window.open( url,winName,theproperty );
  470. if(newwin.closed){
  471. window.location.reload();
  472. }
  473. }
  474. /**
  475. * 16、校验日期格式(YYYY-MM-DD格式)
  476. * elem:日期输入框
  477. * field:提示名称
  478. */
  479. function checkDate(elem,field){
  480. if(isBlank(elem.value))
  481. return true;
  482. var DateValue = "";
  483. var seperator = "-";
  484. var day;
  485. var month;
  486. var year;
  487. var leap = 0;
  488. var err = 0;
  489. err = 0;
  490. DateValue = elem.value;
  491. var re = /[^0-9\-]+/gi;
  492. DateValue = DateValue.replace(re, ""); //去除所有数字和'-'以外的字符
  493. var parts = DateValue.split('-');
  494. VALIDATION: {
  495. var len = parts.length;
  496. if(len != 3) {
  497. err = 19;
  498. break VALIDATION;
  499. }
  500. /*if(parts[0].length == 2) {
  501. parts[0] = '20' + parts[0];
  502. }*/
  503. if(parts[0].length != 4) {
  504. err = 100;
  505. break VALIDATION;
  506. }
  507. year = parseInt(jsTrimLeadingZero(jsTrim(parts[0])), 10);
  508. if ((isNaN(year))|| (year == 0)) {
  509. err = 20;
  510. break VALIDATION;
  511. }
  512. /* Validation of month*/
  513. month = parseInt(jsTrimLeadingZero(jsTrim(parts[1])), 10);
  514. if ((isNaN(month))|| (month < 1) || (month > 12)) {
  515. err = 21;
  516. break VALIDATION;
  517. }
  518. /* Validation of day*/
  519. day = parseInt(jsTrimLeadingZero(jsTrim(parts[2])), 10);
  520. if ((isNaN(day))|| (day < 1)) {
  521. err = 22;
  522. break VALIDATION;
  523. }
  524. /* Validation leap-year / february / day */
  525. if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
  526. leap = 1;
  527. }
  528. if ((month == 2) && (leap == 1) && (day > 29)) {
  529. err = 23;
  530. break VALIDATION;
  531. }
  532. if ((month == 2) && (leap != 1) && (day > 28)) {
  533. err = 24;
  534. break VALIDATION;
  535. }
  536. /* Validation of other months */
  537. if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
  538. err = 25;
  539. break VALIDATION;
  540. }
  541. if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
  542. err = 26;
  543. break VALIDATION;
  544. }
  545. /* if 00 ist entered, no error, deleting the entry */
  546. if ((day == 0) && (month == 0) && (year == 00)) {
  547. err = 0; day = ""; month = ""; year = ""; seperator = "";
  548. }
  549. }
  550. /* if no error, write the completed date to Input-elem (e.g. 13.12.2001) */
  551. if (err == 0) {
  552. if (compareDate(year + seperator + month + seperator + day, "1900" + seperator + "1" + seperator + "1") < 0){
  553. // alert(field + '的值不能小于1900-1-1');
  554. addFieldErrorWithObject(elem, field + "的值必须在1900-1-1到2038-12-31之间");
  555. elem.select();
  556. return false;
  557. }
  558. if (compareDate("2038" + seperator + "12" + seperator + "31", year + seperator + month + seperator + day) < 0){
  559. // alert(field + '的值不能大于2038-1-1');
  560. addFieldErrorWithObject(elem, field + "的值必须在1900-1-1到2038-12-31之间");
  561. elem.select();
  562. return false;
  563. }
  564. elem.value = year + seperator + month + seperator + day;
  565. } else {
  566. addFieldErrorWithObject(elem, '要求'+ field + '的格式为yyyy-mm-dd,并请注意月份与日期的有效范围');
  567. // alert(field + '为日期型\n日期的格式为yyyy-mm-dd\n并请注意月份与日期的有效范围');
  568. elem.select();
  569. return false;
  570. }
  571. return true;
  572. }
  573. /**
  574. * 16、校验日期格式(YYYY-MM-DD格式)
  575. * elem:日期输入框
  576. * field:提示名称
  577. */
  578. function checkDate2(value,field){
  579. if(isBlank(value))
  580. return "";
  581. var DateValue = "";
  582. var seperator = "-";
  583. var day;
  584. var month;
  585. var year;
  586. var leap = 0;
  587. var err = 0;
  588. err = 0;
  589. DateValue = value;
  590. var re = /[^0-9\-]+/gi;
  591. DateValue = DateValue.replace(re, ""); //去除所有数字和'-'以外的字符
  592. var parts = DateValue.split('-');
  593. VALIDATION: {
  594. var len = parts.length;
  595. if(len != 3) {
  596. err = 19;
  597. break VALIDATION;
  598. }
  599. /*if(parts[0].length == 2) {
  600. parts[0] = '20' + parts[0];
  601. }*/
  602. if(parts[0].length != 4) {
  603. err = 100;
  604. break VALIDATION;
  605. }
  606. year = parseInt(jsTrimLeadingZero(jsTrim(parts[0])), 10);
  607. if ((isNaN(year))|| (year == 0)) {
  608. err = 20;
  609. break VALIDATION;
  610. }
  611. /* Validation of month*/
  612. month = parseInt(jsTrimLeadingZero(jsTrim(parts[1])), 10);
  613. if ((isNaN(month))|| (month < 1) || (month > 12)) {
  614. err = 21;
  615. break VALIDATION;
  616. }
  617. /* Validation of day*/
  618. day = parseInt(jsTrimLeadingZero(jsTrim(parts[2])), 10);
  619. if ((isNaN(day))|| (day < 1)) {
  620. err = 22;
  621. break VALIDATION;
  622. }
  623. /* Validation leap-year / february / day */
  624. if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
  625. leap = 1;
  626. }
  627. if ((month == 2) && (leap == 1) && (day > 29)) {
  628. err = 23;
  629. break VALIDATION;
  630. }
  631. if ((month == 2) && (leap != 1) && (day > 28)) {
  632. err = 24;
  633. break VALIDATION;
  634. }
  635. /* Validation of other months */
  636. if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
  637. err = 25;
  638. break VALIDATION;
  639. }
  640. if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
  641. err = 26;
  642. break VALIDATION;
  643. }
  644. /* if 00 ist entered, no error, deleting the entry */
  645. if ((day == 0) && (month == 0) && (year == 00)) {
  646. err = 0; day = ""; month = ""; year = ""; seperator = "";
  647. }
  648. }
  649. /* if no error, write the completed date to Input-elem (e.g. 13.12.2001) */
  650. if (err == 0) {
  651. if (compareDate(year + seperator + month + seperator + day, "1900" + seperator + "1" + seperator + "1") < 0){
  652. return field + "的值必须在1900-1-1到2038-12-31之间";
  653. }
  654. if (compareDate("2038" + seperator + "1" + seperator + "1", year + seperator + month + seperator + day) < 0){
  655. return field + "的值必须在1900-1-1到2038-12-31之间";
  656. }
  657. value = year + seperator + month + seperator + day;
  658. } else {
  659. return '要求'+ field + '的格式为yyyy-mm-dd,并请注意月份与日期的有效范围';
  660. }
  661. return "";
  662. }
  663. function jsTrim(s) {
  664. return s.replace(/(^\s+)|(\s+$)/g, "");
  665. }
  666. function jsTrimLeadingZero(s) {
  667. return s.replace(/(^0+)/g, "");
  668. }
  669. /**
  670. * 17、校验身份证号是否有效
  671. * elem:日期输入框
  672. * field:提示名称
  673. */
  674. function checkIdentityCard(elem){
  675. if(isBlank(elem.value)) return true;
  676. var reOld = /^[0-9]{15}$/gi;
  677. var reNew = /^[0-9]{17}[0-9x]{1}$/gi;
  678. var err = 0;
  679. if(reOld.test(elem.value)) {
  680. err = 0;
  681. }
  682. else if(reNew.test(elem.value)){
  683. err = 0;
  684. }
  685. else {
  686. err = 1;
  687. addFieldError(elem.name,'请输入正确的身份证号!');
  688. return false;
  689. }
  690. var year;
  691. var month;
  692. var day;
  693. var date;
  694. if (err == 0){
  695. if (elem.value.length == 15){
  696. year = "19" + elem.value.substring(6, 8);
  697. month = elem.value.substring(8, 10);
  698. day = elem.value.substring(10, 12)
  699. date = year + "-" + month + "-" + day;
  700. }
  701. else if (elem.value.length == 18){
  702. year = elem.value.substring(6, 10);
  703. month = elem.value.substring(10, 12);
  704. day = elem.value.substring(12, 14)
  705. date = year + "-" + month + "-" + day;
  706. }
  707. var checkdate = checkDate2(date, "身份证号中出生日期");
  708. if (checkdate == ""){
  709. return true;
  710. }
  711. else{
  712. addFieldError(elem.name, checkdate);
  713. return false;
  714. }
  715. }
  716. }
  717. /**
  718. * 18、判断是否为空
  719. * s:值
  720. */
  721. function isBlank(s) {
  722. var re = /^\s*$/g;
  723. return re.test(s);
  724. }
  725. /**
  726. * 19、判断输入框中只能输入字母数字
  727. *
  728. */
  729. function verifyLetterAndNum(elem,field){
  730. var flag=false;
  731. var str=/[a-z]|[A-Z]|[0-9]/;
  732. var str1=trim(elem.value).length;
  733. for(var i=0;i<str1;i++){
  734. if(!str.test(trim(elem.value).charAt(i))){
  735. flag=true;
  736. break;
  737. }
  738. }
  739. if(flag==true){
  740. alert(field+"只能为数字和字母");
  741. elem.focus();
  742. return false;
  743. }
  744. }
  745. function verifyLetterAndNum2(elem,field){
  746. var flag=false;
  747. var str=/[a-z]|[A-Z]|[0-9]/;
  748. var str1=trim(elem.value).length;
  749. for(var i=0;i<str1;i++){
  750. if(!str.test(trim(elem.value).charAt(i))){
  751. flag=true;
  752. break;
  753. }
  754. }
  755. if(flag==true){
  756. addFieldErrorWithObject(elem,field+"只能为数字和字母!");
  757. elem.focus();
  758. return false;
  759. }else {
  760. return true;
  761. }
  762. }
  763. /**
  764. * 20、打开模态窗口
  765. * url:地址
  766. * arguments:参数
  767. * twidth:宽度
  768. * theight:高度
  769. */
  770. function openModalDialog(url,arguments,twidth,theight){
  771. var sRet = window.showModalDialog(url,arguments,"dialogWidth=" + twidth + "px;dialogHeight=" + theight + "px;status=no;help=no;resizable=no;");
  772. if(sRet != null){
  773. if("refresh" == sRet.kind){
  774. window.location.reload();
  775. }
  776. }
  777. return sRet;
  778. }
  779. /*
  780. *21、手机号码验证
  781. */
  782. function checkMobilePhone(elem){
  783. val=elem.value;
  784. if(trim(val)!=''){
  785. var pattern=/^[0-9]{1,20}$/;
  786. //alert(val);
  787. if(!pattern.test(val)){
  788. addFieldError(elem.name,"请输入正确的号码!并且不能超过20个数字");
  789. return false;
  790. }
  791. }
  792. return true;
  793. }
  794. /*
  795. *22、计算输入字符数
  796. */
  797. function computeInputLength(elem){
  798. var len;
  799. len = 0;
  800. var val = trim(elem.value);
  801. var length = val.length;
  802. for (var i=0;i<length;i++){
  803. if (val.charCodeAt(i)>255)
  804. len+=2;
  805. else
  806. len++;
  807. }
  808. alert("您已经输入了"+len+"个字符!");
  809. }
  810. /*
  811. *23、Y/N数据验证
  812. */
  813. function checkYN(elem,field){
  814. var val=trim(elem.value);
  815. var pattern=/^(Y|N|y|n)$/;
  816. if(!pattern.test(val)){
  817. addFieldError(elem.id,field+'只能输入Y或N');
  818. elem.focus();
  819. return false;
  820. }
  821. else{
  822. elem.value=val.toUpperCase();
  823. }
  824. return true;
  825. }
  826. /*
  827. *24、0/1数据验证
  828. */
  829. function check01(elem,field){
  830. var val=trim(elem.value);
  831. var pattern=/^(0|1)$/;
  832. if(!pattern.test(val)){
  833. addFieldError(elem.id,field+'只能输入0或1');
  834. elem.focus();
  835. return false;
  836. }
  837. return true;
  838. }
  839. /*
  840. *25、http://IP:PORT格式地址验证,可以为空
  841. */
  842. function checkipport(elem,field){
  843. var val=trim(elem.value);
  844. if(val==''){
  845. return true;
  846. }
  847. var pattern=/^http:\/\/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{2,10}$/;
  848. if(!pattern.test(val)){
  849. addFieldError(elem.id,field+'请确认符合http://IP:PORT格式');
  850. elem.focus();
  851. return false;
  852. }
  853. return true;
  854. }
  855. /*
  856. *26、MO/TO数据验证
  857. */
  858. function checkmoto(elem,field){
  859. var val=trim(elem.value);
  860. var pattern=/^(M|T)O$/;
  861. if(!pattern.test(val)){
  862. addFieldError(elem.id,field+'只能输入MO或TO');
  863. elem.focus();
  864. return false;
  865. }
  866. return true;
  867. }
  868. /*
  869. *27、固定电话号码验证
  870. */
  871. function checkPhone(elem,field){
  872. val=elem.value;
  873. if(trim(val).length==0){
  874. return true;
  875. }
  876. if(val.indexOf('-')==-1){
  877. var pattern=/^[0-9]{1,}$/;
  878. if(!pattern.test(val)){
  879. addFieldError(elem.name,'请输入正确的'+field);
  880. return false;
  881. }
  882. return true;
  883. }
  884. else{
  885. pattern=/^[0-9]{3,4}-[0-9]{6,8}$/;
  886. if(!pattern.test(val)){
  887. addFieldError(elem.name,'请输入正确的'+field);
  888. elem.focus();
  889. return false;
  890. }
  891. return true;
  892. }
  893. }
  894. /*
  895. *28、是否小于100000(十万)
  896. */
  897. function checklt100thousand(elem,field){
  898. if(!checkPlusInt(elem,field))
  899. return false;
  900. val=elem.value;
  901. var thousand100=100000;
  902. if(val<thousand100){
  903. addFieldError(elem.id,field+'不能小于'+thousand100);
  904. elem.focus();
  905. return false;
  906. }
  907. return true;
  908. }
  909. /**
  910. * 29、校验Email地址是否有效
  911. * elem:Email地址输入框
  912. */
  913. function checkEmail(elem){
  914. if(isBlank(elem.value)) return true;
  915. var reEmail =/[\w-.]+@{1}[\w-]+\.{1}\w{2,4}(\.{0,1}\w{2}){0,1}/ig;
  916. if(reEmail.test(elem.value)) {
  917. return true;
  918. }
  919. else {
  920. addFieldError(elem.name,'Email格式不对,请输入正确的Email地址!');
  921. elem.focus();
  922. return false;
  923. }
  924. }
  925. /**
  926. * 30、根据身份证获取生日
  927. */
  928. function checkoutBirthday(elem){
  929. var birth='';
  930. if(!checkIdentityCard(elem)){
  931. return;
  932. };
  933. val=trim(elem.value);
  934. if(val.length==0){
  935. return;
  936. }
  937. if(val.length==15){
  938. birth='19'+val.substring(6,8);
  939. birth=birth+'-'+val.substring(8,10);
  940. birth=birth+'-'+val.substring(10,12);
  941. }
  942. else if(val.length=18){
  943. birth=val.substring(6,10);
  944. birth=birth+'-'+val.substring(10,12);
  945. birth=birth+'-'+val.substring(12,14);
  946. }
  947. return birth;
  948. }
  949. /**
  950. * 31、根据身份证获取性别
  951. */
  952. function checkoutSex(elem){
  953. var sex='';
  954. if(!checkIdentityCard(elem)){
  955. return;
  956. };
  957. val=trim(elem.value);
  958. if(val.length==0){
  959. return;
  960. }
  961. var sexindex=-1;
  962. if(val.length==15){
  963. sexindex=14;
  964. }
  965. else{
  966. sexindex=16;
  967. }
  968. sex=val.substring(sexindex,sexindex+1);
  969. if(sex%2==0){
  970. return 'F';
  971. }
  972. else{
  973. return 'M';
  974. }
  975. }
  976. /**
  977. * 32、判断输入框中的数值是否在指定范围内(如:0-100),包含最大值,最小值
  978. * min:最小值
  979. * max:最大值
  980. */
  981. function checkNumRange3(elem,field,min,max){
  982. if(!checkNum(elem,field)){
  983. return false;
  984. }
  985. val = elem.value;
  986. if(val<min || val>max){
  987. addFieldError(elem.id,field+"只能是"+min+"~"+max+"范围内的数值!");
  988. elem.focus();
  989. return false;
  990. }
  991. return true;
  992. }
  993. /**
  994. * 33、判断输入框中只能输入数字
  995. */
  996. function checkNumber(elem,field){
  997. val=elem.value;
  998. var pattern=/^[0-9]/;
  999. if(!pattern.test(val)){
  1000. alert(field+"只能输入数字!");
  1001. elem.value = '';
  1002. elem.focus();
  1003. return false;
  1004. }
  1005. return true;
  1006. }
  1007. /*
  1008. *34、1/2数据验证
  1009. */
  1010. function check12(elem,field){
  1011. var val=trim(elem.value);
  1012. var pattern=/^(1|2)$/;
  1013. if(!pattern.test(val)){
  1014. addFieldError(elem.id,field+'只能输入1或2');
  1015. elem.focus();
  1016. return false;
  1017. }
  1018. return true;
  1019. }
  1020. /*
  1021. *35、用户密码安全等级验证
  1022. * 1:低,2:中,3:高
  1023. */
  1024. function checkPasswordSecurity(pwd){
  1025. if(pwd.length<4){
  1026. return 1;
  1027. }
  1028. var p1= (pwd.search(/[a-zA-Z]/)!=-1) ? 1 : 0;
  1029. var p2= (pwd.search(/[0-9]/)!=-1) ? 1 : 0;
  1030. var p3= (pwd.search(/[^A-Za-z0-9_]/)!=-1) ? 1 : 0;
  1031. return p1+p2+p3;
  1032. }
  1033. /*
  1034. *该方法需与handlefielderror.ftl配合使用
  1035. */
  1036. function checkUserPassword(elem){
  1037. if(!elem){
  1038. return false;
  1039. }
  1040. if(trim(elem.value)==''){
  1041. return;
  1042. }
  1043. var p=checkPasswordSecurity(elem.value);
  1044. if(p==1){
  1045. addFieldPromptWithObject(elem,"该密码安全等级为低,容易被破解","yellow");
  1046. }
  1047. else if(p==2){
  1048. addFieldSuccessMsgWithObject(elem,"该密码安全等级为中,建议修改");
  1049. }
  1050. else if(p==3){
  1051. addFieldSuccessMsgWithObject(elem,"该密码安全等级为高,可安全使用");
  1052. }
  1053. }
  1054. /*
  1055. *36、1/2/3数据验证
  1056. */
  1057. function check123(elem,field){
  1058. var val=trim(elem.value);
  1059. var pattern=/^(1|2|3)$/;
  1060. if(!pattern.test(val)){
  1061. addFieldError(elem.id,field+'只能输入1或2或3');
  1062. elem.focus();
  1063. return false;
  1064. }
  1065. return true;
  1066. }
  1067. /**
  1068. * 37、校验邮政编码是否有效
  1069. * elem:邮政编码输入框
  1070. */
  1071. function checkPostalCode(elem){
  1072. if(isBlank(elem.value)) return true;
  1073. var pattern = /^[0-9]{6}$/;
  1074. if(pattern.test(elem.value)) {
  1075. return true;
  1076. }else {
  1077. addFieldError(elem.name,'邮政编码格式不对,请输入正确的邮政编码!');
  1078. elem.focus();
  1079. return false;
  1080. }
  1081. }
  1082. /*
  1083. *38、web地址格式验证(http://IP格式 或 http://域名格式)
  1084. */
  1085. function checkwebaddress(elem,field){
  1086. var val=trim(elem.value);
  1087. if(val==''){
  1088. return true;
  1089. }
  1090. var pattern=/^http:\/\/$/;
  1091. if(!pattern.test(val.substring(0,7))){
  1092. addFieldError(elem.id,field+'请确认符合http://IP格式或http://域名格式');
  1093. elem.focus();
  1094. return false;
  1095. }
  1096. return true;
  1097. }
  1098. /*
  1099. * 39、1或1,2或1,2,3,4,5,6数据格式验证(即:用“,”号分隔的1——6数字验证)
  1100. */
  1101. function check123456CommaSplit(elem,field){
  1102. var val=trim(elem.value);
  1103. var len = val.length;
  1104. var index = len;
  1105. var value, flag=true;
  1106. while(index>0){
  1107. value = val.substring(index -1, index);
  1108. //寄数位置是数字,偶数位置是“,”分隔符(如:1,2,3,4,5,6)
  1109. if(index%2==1){
  1110. if(value!='1' && value!='2' && value!='3' && value!='4' && value!='5'&& value!='6'){
  1111. addFieldError(elem.id,field+'只能输入用“,”号分隔的1——6数字');
  1112. elem.focus();
  1113. return false;
  1114. }
  1115. }else{
  1116. if(value!=','){
  1117. addFieldError(elem.id,field+'只能输入用“,”号分隔的1——6数字');
  1118. elem.focus();
  1119. return false;
  1120. }
  1121. }
  1122. index = index -1;
  1123. }
  1124. return true;
  1125. }
  1126. /**
  1127. *40、验证输入域中不能有<>~!@#$%&|非法字符
  1128. */
  1129. function checkInvalidChar(obj){
  1130. var pattern = /[\<\>\&~!@#$%|]/;
  1131. if(pattern.test(obj.value)){
  1132. addFieldErrorWithObject(obj,"不能有<>~!@#$%&|等字符");
  1133. return false;
  1134. }
  1135. return true;
  1136. }
  1137. String.prototype.trim=function(){
  1138. return this.replace(/(^\s*)|(\s*$)/g, "");
  1139. }
  1140. String.prototype.ltrim=function(){
  1141. return this.replace(/(^\s*)/g,"");
  1142. }
  1143. String.prototype.rtrim=function(){
  1144. return this.replace(/(\s*$)/g,"");
  1145. }
  1146. /**
  1147. *将<和>转译
  1148. */
  1149. function invalidCharReplace(text){
  1150. a=text.replace(/>/g,">");
  1151. text=a.replace(/</g,"<");
  1152. return text;
  1153. }
  1154. /**
  1155. *41、表单中所有输入框的内容去掉前后空格
  1156. */
  1157. function trimAllElementsToSave(form){
  1158. var formMap = new Array();
  1159. var _len = form.elements.length;
  1160. for(var i = 0; i < _len; i ++){
  1161. var child = form.elements[i];
  1162. if(!child)
  1163. continue;
  1164. if(child.tagName == 'INPUT'){
  1165. var type = child.type.toLowerCase();
  1166. if(type == 'text' || type == 'hidden')
  1167. child.value = trim(child.value);
  1168. }
  1169. else if(child.tagName == 'TEXTAREA')
  1170. child.value = trim(child.value);
  1171. }
  1172. }

发表评论

表情:
评论列表 (有 0 条评论,128人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JavaScript 数组方法大全

    为了方便以后查看数组的方法,现将对数组的操作方法进行汇总整理。 数组创建 JavaScript中创建数组有两种方式,第一种是使用 Array 构造函数: va

    相关 JavaScript数组方法大全(推荐)

    数组在笔试中经常会出现的面试题,javascript中的数组与其他语言中的数组有些不同,为了方便之后数组的方法学习,下面小编给大家整理了关于数组的操作方法,一起看看吧。 数