commonValidator.js 35 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157
  1. /**
  2. * validator(校验器)文件 110613
  3. *
  4. *
  5. */
  6. wd.commonValidator={};
  7. var lsSfzh;
  8. /**
  9. * 非空校验器
  10. */
  11. wd.commonValidator.notNull =
  12. function(valueArr,//保存所有被校验的表单值的数组
  13. params//校验器的其余参数
  14. ){
  15. var rs = '';
  16. var msgPrefix = params['msgPrfx'];//消息头
  17. var minValue = params['minLen'];//最断数值
  18. var maxValue = params['maxLen'];//最长数值
  19. var length = params['len'];//长度
  20. var trim =typeof params['trim']=="undefined"?true:params['trim'];//前后空格,true则不能保留空格,trim默认值为true
  21. var allNull =typeof params['allNull']=="undefined"?false:params['allNull'];//允许全部为空 2022-01-10
  22. /// 增加 noZero="true",值为 0 时,也作为空 -- 默认值为 true。Lin
  23. // 解决不允许为空的 码(int)、ID(long) 有默认值 0 的问题
  24. var noZero = (typeof params['noZero']=="undefined")? true : params['noZero'];
  25. ///
  26. if(!wd.commonValidator.condition.call(this,valueArr,params))return rs;
  27. // trim=(trim==null||trim==undefined)?true:trim;//
  28. var regTrim = /(^\s+)|(\s+$)/;
  29. var isNullCount = 0;
  30. var isBlankBefore = false;//曾经有空格
  31. var nullArr=[];
  32. for(var i=0;i<valueArr.length;i++){
  33. var value = valueArr[i];
  34. /* 改,增加 noZero="true",值为 0 时,也作为空 -- 默认值为 true。Lin
  35. if(value==null||value==''||value==undefined){
  36. */ if (value==null || value=='' || value==undefined || (noZero && value==0)) {
  37. nullArr.push(i);
  38. }
  39. /* 在公共校验器已经校验了
  40. if(value!=null&&value!=''){
  41. if(minValue!=null && value.length < minValue){
  42. rs += msgPrefix+'应至少'+minValue+'个字符\r\n';
  43. }
  44. if(maxValue!=null&&value.length> maxValue){
  45. rs += msgPrefix+'应不超过'+maxValue+'个字符\r\n';
  46. }
  47. if(maxValue!=null&&value.length> maxValue){
  48. rs += msgPrefix+'应不超过'+maxValue+'个字符\r\n';
  49. }
  50. }*/
  51. if(trim){
  52. if(value&& regTrim.test(value)&&isBlankBefore==false){
  53. rs += msgPrefix+'前后不能包含空格!\r\n';
  54. isBlankBefore=true;
  55. }
  56. }
  57. }
  58. // isNullCount==valueArr.length
  59. if(nullArr.length>0){
  60. //一个值
  61. if(valueArr.length==1){
  62. rs += msgPrefix+'不能为空!\r\n';
  63. }else{
  64. //多值
  65. var pp=msgPrefix.split(/,/);
  66. if(valueArr.length==nullArr.length){
  67. if(!allNull){
  68. rs += pp.join(",")+'不能全为空!\r\n';
  69. }
  70. }else{
  71. for(var i=0;i<nullArr.length;i++){
  72. var index=nullArr[i];
  73. rs += pp[index]+'不能为空!\r\n';
  74. }
  75. }
  76. }
  77. }
  78. rs += wd.commonValidator.validator(valueArr,params);
  79. return rs;
  80. }
  81. wd.commonValidator.idCard =
  82. function(valueArr,//保存所有被校验的表单值的数组
  83. params//校验器的其余参数
  84. ){
  85. // console.log("---------------------------------------");
  86. // console.log(valueArr);
  87. // console.log(params);
  88. // console.log("---------------------------------------");
  89. var rs = "";//返回的校验结果
  90. var value=valueArr[0];//身份证号值
  91. var sex;
  92. var csdqm;
  93. var birthday;
  94. // value=this.getElementValue("sfzh");
  95. birthday=this.getElementValue("csrq");
  96. if(birthday)
  97. birthday = birthday.replace(/-/g,'');
  98. sex=this.getElementValue("xbm");
  99. csdqm=this.getElementValue("csdqm");
  100. //仅校验身份号码
  101. var sfzjlbm =params['sfzjlbm']||this.getElementValue("sfzjlbm")||"1"; //valueArr[3];//身份证件类别码
  102. var msgPrefix = params['msgPrfx']||"";//消息头
  103. /* 改,增加默认值。Lin
  104. var idCardNotNull = params['idCardNotNull'];//身份证号不能为空
  105. */ var idCardNotNull = (params['notBlank']? params['notBlank'] : false);
  106. if (!value && idCardNotNull)
  107. {
  108. rs+=msgPrefix+'身份证件号不能为空!\r\n';
  109. }
  110. //如果证件类型为身份证,且不为空
  111. //如果身份证为888开头的,就不验证
  112. if(!value||sfzjlbm!=1||value.match(/^888.*/)){
  113. return rs;
  114. }
  115. var getBirthdayByIdCard;
  116. var Errors=new Array(
  117. "",
  118. msgPrefix+"身份证号位数不对!\r\n",
  119. msgPrefix+"身份证号出生日期超出范围或含有非法字符!\r\n",
  120. msgPrefix+"身份证号校验错误!(如果含X的,必须是大写半角的X!)\r\n",
  121. msgPrefix+"身份证地区非法!\r\n"
  122. );
  123. var area={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}
  124. var Y,JYM;
  125. var S,M;
  126. var value_array = new Array();
  127. value_array = value.split("");
  128. switch(value.length){
  129. case 15:
  130. if ((parseInt(value.substr(6,2))+1900) % 4 == 0 || ((parseInt(value.substr(6,2))+1900) % 100 == 0 && (parseInt(value.substr(6,2))+1900) % 4 == 0 )){
  131. ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性
  132. } else {
  133. ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性
  134. }
  135. if(ereg.test(value)) rs+=Errors[0];
  136. else rs+=Errors[2];
  137. break;
  138. case 18:
  139. //18位身份号码检测
  140. //出生日期的合法性检查
  141. //闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))
  142. //平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))
  143. if ( parseInt(value.substr(6,4)) % 4 == 0 || (parseInt(value.substr(6,4)) % 100 == 0 && parseInt(value.substr(6,4))%4 == 0 )){
  144. ereg=/^[1-9][0-9]{5}[0-9]{4}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式
  145. } else {
  146. ereg=/^[1-9][0-9]{5}[0-9]{4}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式
  147. }
  148. if(ereg.test(value)){//测试出生日期的合法性
  149. //计算校验位
  150. S = (parseInt(value_array[0]) + parseInt(value_array[10])) * 7
  151. + (parseInt(value_array[1]) + parseInt(value_array[11])) * 9
  152. + (parseInt(value_array[2]) + parseInt(value_array[12])) * 10
  153. + (parseInt(value_array[3]) + parseInt(value_array[13])) * 5
  154. + (parseInt(value_array[4]) + parseInt(value_array[14])) * 8
  155. + (parseInt(value_array[5]) + parseInt(value_array[15])) * 4
  156. + (parseInt(value_array[6]) + parseInt(value_array[16])) * 2
  157. + parseInt(value_array[7]) * 1
  158. + parseInt(value_array[8]) * 6
  159. + parseInt(value_array[9]) * 3 ;
  160. Y = S % 11;
  161. M = "F";
  162. JYM = "10X98765432";
  163. M = JYM.substr(Y,1);//判断校验位
  164. if(M == value_array[17]) rs+=Errors[0]; //检测ID的校验位
  165. else rs+=Errors[3];
  166. }else
  167. rs+=Errors[2];
  168. break;
  169. default:
  170. rs+=Errors[1];
  171. break;
  172. }
  173. // if(birthPlaceValidate&&!rs){
  174. // var csdq = value.substring(0,6);
  175. // if(!csdqm||csdqm!=csdq){//不存在,或者不相等,校验失败
  176. // rs+=msgPrefix+'出生地区与身份证号不符!\r\n';
  177. // }
  178. // }
  179. try{
  180. var setValue = params['autoFill']?params['autoFill']:true;//自动填写性别、出生地区、出生日期
  181. if(!rs&&setValue&&(value.length==15||value.length==18)&&(!birthday||!sex)){
  182. var current_lsSfzh=lsSfzh;
  183. lsSfzh =value;
  184. var xbmVal;
  185. if(value.length == 15){
  186. xbmVal=(value.substring(14,15)%2==0?2:1);
  187. }else{
  188. xbmVal=(value.substring(16,17)%2==0?2:1);
  189. }
  190. this.setElementValue("xbm",xbmVal);
  191. this.setElementValue("csrq",value.substring(6,10)+"-"+value.substring(10,12)+"-"+value.substring(12,14));
  192. //处理出生地区
  193. //批量录入不支持级联,下面唔改住
  194. // var csdqm = value.substring(0,6);
  195. var thiscsdqm= this.getElementValue("csdqm");
  196. var thisjgdqm= this.getElementValue("jgdqm");
  197. thishkdqm= this.getElementValue("hkdqm");
  198. csdqm = value.substring(0,6);
  199. if(current_lsSfzh!=value&&(!thiscsdqm||!thisjgdqm)){
  200. $.ajax({
  201. async: false,
  202. type: "post",
  203. url: "/service?ssServ=selNewDqm", // =ry_getDqm。Lin
  204. data: {
  205. dqm: csdqm
  206. },
  207. success: function (data) {
  208. var csdqm = data;
  209. if(!csdqm)return;
  210. if(wd.edit.cascading.getInstance("csdqm")&&!thiscsdqm){
  211. wd.edit.cascading.getInstance("csdqm").setValue(csdqm);
  212. if(wd.edit.objectPicker.getInstance("csxian")&&wd.edit.objectPicker.getInstance("csxian").onchange){
  213. wd.edit.objectPicker.getInstance("csxian").onchange();
  214. }
  215. }
  216. if(wd.edit.cascading.getInstance("jgdqm")&&!thisjgdqm){
  217. wd.edit.cascading.getInstance("jgdqm").setValue(csdqm);
  218. if(wd.edit.objectPicker.getInstance("jgxian")&&wd.edit.objectPicker.getInstance("jgxian").onchange){
  219. wd.edit.objectPicker.getInstance("jgxian").onchange();
  220. }
  221. }
  222. if(wd.edit.cascading.getInstance("hkdqm")&&!thishkdqm){
  223. wd.edit.cascading.getInstance("hkdqm").setValue(csdqm);
  224. }
  225. },
  226. error: function (data) {
  227. console.log(data);
  228. }
  229. })
  230. }
  231. }
  232. // lsSfzh = growHeightList["sfzh"].val();
  233. }catch(e){
  234. console.log(e);
  235. }
  236. //出生日期,性别 先自动填写,再校验
  237. birthday=this.getElementValue("csrq");
  238. if(birthday)
  239. birthday = birthday.replace(/-/g,'');
  240. sex=this.getElementValue("xbm");
  241. var birthDayValidate= params["chkCsrq"]?params["chkCsrq"]:true;//是否关联校验出生日期,默认false,false校验
  242. var sexValidate= params["chkXb"]?params["chkXb"]:true;//是否关联校验性别,默认false,false校验
  243. var birthPlaceValidate= params["chkCsdq"]?params["chkCsdq"]:true;//是否关联校验出生地,默认false,false校验
  244. if(birthDayValidate&&!rs){
  245. var birthdayFromIdCard = value.substring(6,14);
  246. if(!birthday||birthday!=birthdayFromIdCard){//不存在,或者不相等,校验失败
  247. rs+=msgPrefix+'出生日期与身份证号不符!\r\n';
  248. }
  249. }
  250. if(sexValidate&&!rs){
  251. var sexFromIdCard;
  252. if(value.length == 15){
  253. sexFromIdCard=value.substring(14,15);
  254. }else{
  255. sexFromIdCard=value.substring(16,17);
  256. }
  257. if(!sex||sex%2!=sexFromIdCard%2){//不存在,或者不相等,校验失败
  258. rs+=msgPrefix+'性别与身份证号不符!\r\n';
  259. }
  260. }
  261. /// 增加。Lin
  262. if(!birthPlaceValidate){
  263. var csdq = value.substring(0,6);
  264. if(!csdqm||csdqm!=csdq){//不存在,或者不相等,校验失败
  265. rs+=msgPrefix+'出生地区与身份证号不符!\r\n';
  266. }
  267. }
  268. ///
  269. return rs;
  270. }
  271. /**
  272. * 身份证号校验器
  273. */
  274. wd.commonValidator.idCard20190625 =
  275. function(valueArr,//保存所有被校验的表单值的数组
  276. params//校验器的其余参数
  277. ){
  278. var rs = "";//返回的校验结果
  279. var value = document.querySelector("[name='sfzh']").value// valueArr[0];//身份证号值
  280. var birthday = document.querySelector("[name='csrq']").value//valueArr[1];//出生日期
  281. //var sex = document.querySelector("[name='xbm']").value//valueArr[2];//性别码
  282. var sfzlbmInput=document.querySelector("[name='sfzjlbm']")
  283. var sfzjlbm = sfzlbmInput?sfzlbmInput.value:1 //valueArr[3];//身份证件类别码
  284. if(!sfzjlbm)sfzjlbm=1;
  285. //var csdqm = document.querySelector("[name='csdqm']").value//valueArr[3];//身份证件类别码
  286. var msgPrefix = params['msgPrefix'];//消息头
  287. var idCardNotNull = params['sfzhNotNull'];//身份证号不能为空
  288. //var birthDayNotNull = params['csrqNotNull'];//出生年月不能为空
  289. //var sexNotNull = params['xbNotNull'];//性别不能为空
  290. //var csdqmNotNull = params['csdqmNotNull'];//性别不能为空
  291. var setValue = params['setValue'];//自动填写性别、出生地区、出生日期
  292. if(!msgPrefix)//如果用户有输入消息头
  293. msgPrefix='';
  294. var msgPrefix = params['msgPrefix'];//消息头
  295. if (!value && idCardNotNull)
  296. {
  297. rs+=msgPrefix+'身份证件号不能为空!\r\n';
  298. }
  299. /*if(!birthday&&birthDayNotNull)
  300. rs+=msgPrefix+'出生日期不能为空!\r\n';
  301. else{
  302. if(birthDayNotNull){
  303. birthday = birthday.replace(/-/g,'');
  304. }
  305. }*/
  306. if(birthday)
  307. birthday = birthday.replace(/-/g,'');
  308. /*if(!sex&&sexNotNull)
  309. rs+=msgPrefix+'性别不能为空!\r\n';
  310. if(!csdqm&&csdqmNotNull){
  311. rs+=msgPrefix+'出生地区不能为空!\r\n';
  312. }*/
  313. if(value&&(!sfzjlbm||sfzjlbm==1)){//如果证件类型为身份证,且不为空
  314. if(value.match(/^888.*/)){//如果身份证为888开头的,就不验证
  315. }else{
  316. var Errors=new Array(
  317. "",
  318. msgPrefix+"身份证号位数不对!\r\n",
  319. msgPrefix+"身份证号出生日期超出范围或含有非法字符!\r\n",
  320. msgPrefix+"身份证号校验错误!(如果含X的,必须是大写半角的X!)\r\n",
  321. msgPrefix+"身份证地区非法!\r\n"
  322. );
  323. var area={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}
  324. var value,Y,JYM;
  325. var S,M;
  326. var value_array = new Array();
  327. value_array = value.split("");
  328. //地区检验
  329. //if(csdqm.substr(0,4)!=value.substr(0,4)/*area[parseInt(value.substr(0,2))]==null*/) rs+=Errors[4];
  330. //身份号码位数及格式检验
  331. switch(value.length){
  332. case 15:
  333. if ((parseInt(value.substr(6,2))+1900) % 4 == 0 || ((parseInt(value.substr(6,2))+1900) % 100 == 0 && (parseInt(value.substr(6,2))+1900) % 4 == 0 )){
  334. ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性
  335. } else {
  336. ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性
  337. }
  338. if(ereg.test(value)) rs+=Errors[0];
  339. else rs+=Errors[2];
  340. //校验出生年月
  341. /*if(birthday){
  342. var birthdayFromIdCard = value.substring(6,12);
  343. if(birthday!=birthdayFromIdCard)
  344. rs+=msgPrefix+'出生日期与身份证号不符!\r\n';
  345. }
  346. //校验性别
  347. if(sex){
  348. var sexFromIdCard = value.substring(14,15);
  349. if(sex%2!=sexFromIdCard%2)
  350. rs+=msgPrefix+'性别与身份证号不符!\r\n';
  351. }*/
  352. break;
  353. case 18:
  354. //18位身份号码检测
  355. //出生日期的合法性检查
  356. //闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))
  357. //平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))
  358. if ( parseInt(value.substr(6,4)) % 4 == 0 || (parseInt(value.substr(6,4)) % 100 == 0 && parseInt(value.substr(6,4))%4 == 0 )){
  359. ereg=/^[1-9][0-9]{5}[0-9]{4}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式
  360. } else {
  361. ereg=/^[1-9][0-9]{5}[0-9]{4}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式
  362. }
  363. if(ereg.test(value)){//测试出生日期的合法性
  364. //计算校验位
  365. S = (parseInt(value_array[0]) + parseInt(value_array[10])) * 7
  366. + (parseInt(value_array[1]) + parseInt(value_array[11])) * 9
  367. + (parseInt(value_array[2]) + parseInt(value_array[12])) * 10
  368. + (parseInt(value_array[3]) + parseInt(value_array[13])) * 5
  369. + (parseInt(value_array[4]) + parseInt(value_array[14])) * 8
  370. + (parseInt(value_array[5]) + parseInt(value_array[15])) * 4
  371. + (parseInt(value_array[6]) + parseInt(value_array[16])) * 2
  372. + parseInt(value_array[7]) * 1
  373. + parseInt(value_array[8]) * 6
  374. + parseInt(value_array[9]) * 3 ;
  375. Y = S % 11;
  376. M = "F";
  377. JYM = "10X98765432";
  378. M = JYM.substr(Y,1);//判断校验位
  379. if(M == value_array[17]) rs+=Errors[0]; //检测ID的校验位
  380. else rs+=Errors[3];
  381. }else
  382. rs+=Errors[2];
  383. //校验出生年月
  384. /*if(birthday){
  385. var birthdayFromIdCard = value.substring(6,14);
  386. if(birthday!=birthdayFromIdCard){
  387. rs+=msgPrefix+'出生日期与身份证号不符!\r\n';
  388. }
  389. }
  390. //校验性别
  391. if(sex){
  392. var sexFromIdCard = value.substring(16,17);
  393. if(sex%2!=sexFromIdCard%2)
  394. rs+=msgPrefix+'性别与身份证号不符!\r\n';
  395. }*/
  396. break;
  397. default:
  398. rs+=Errors[1];
  399. break;
  400. }
  401. }
  402. }
  403. //回显性别、出生日期、地区
  404. if(!rs&&setValue){
  405. if(value.length == 15){
  406. wd.edit.objectPicker.getInstance("xbm").initValue(value.substring(14,15)%2==0?2:1);
  407. }else{
  408. wd.edit.objectPicker.getInstance("xbm").initValue(value.substring(16,17)%2==0?2:1);
  409. }
  410. document.querySelector("[name='csrq']").value = value.substring(6,10)+"-"+value.substring(10,12)+"-"+value.substring(12,14);
  411. //处理出生地区
  412. var csdqm = value.substring(0,6);
  413. var csdqmstr = String(csdqm);
  414. var csshengdqm=csdqmstr.substring(0,2)+"0000";
  415. var csshidqm=csdqmstr.substring(0,4)+"00";
  416. if($("input[name='csdqm']").val()){
  417. return rs;
  418. }
  419. wd.edit.objectPicker.getInstance("cssheng").initValue(csshengdqm);
  420. wd.edit.objectPicker.getInstance("csshi").initValue(csshidqm);
  421. $("input[name=xbm]").click();//需要触发一次,否则级联无法生效
  422. wd.edit.objectPicker.getInstance("csxian").initValue(csdqm);
  423. $("input[name='csdqm']").val(csdqm);
  424. if($("input[name='hkdqm']").val()){
  425. return rs;
  426. }
  427. wd.edit.objectPicker.getInstance("hksheng").initValue(csshengdqm);
  428. wd.edit.objectPicker.getInstance("hkshi").initValue(csshidqm);
  429. //$("input[name=xbm]").click();//需要触发一次,否则级联无法生效
  430. wd.edit.objectPicker.getInstance("hkxian").initValue(csdqm);
  431. $("input[name='hkdqm']").val(csdqm);
  432. }
  433. return rs;
  434. }
  435. /**
  436. * 浮点数校验器
  437. */
  438. wd.commonValidator.float =
  439. function(valueArr,//保存所有被校验的表单值的数组
  440. params//校验器的其余参数
  441. ){
  442. var rs = '';
  443. var value = valueArr[0];
  444. var msgPrefix = params['msgPrfx'];//消息头
  445. var minValue = params['minVal'];//最小数值
  446. var maxValue = params['maxVal'];//最大数值
  447. var decimalLength = params['decLen'];//保留几位
  448. var reg = new RegExp('^\\d+(\\.\\d{0,'+decimalLength+'})?$');
  449. var regValue = new RegExp('^\\d+(\\.\\d+)?$');
  450. var notNull = params['notBlank']==null?false:params['notBlank'];
  451. if(notNull){
  452. rs += wd.commonValidator.notNull(valueArr,params);
  453. }else{
  454. rs += wd.commonValidator.validator(valueArr,params);
  455. }
  456. if(value!=null&&value!=''){
  457. if(!minValue)//minValue值不指定默认为0
  458. minValue="0";
  459. // if(!regValue.test(value)){
  460. if(isNaN(value)){
  461. rs += msgPrefix+'应为数字!\r\n';
  462. }else{
  463. // if(minValue!=null&&value<minValue){
  464. // rs += msgPrefix+'应不小于'+minValue+'\r\n';
  465. // }
  466. // if(maxValue!=null&&value>maxValue){
  467. // rs += msgPrefix+'应不大于'+maxValue+'\r\n';
  468. // }
  469. if(minValue!=null && (parseInt(value) < parseInt(minValue)&&minValue!="-")){
  470. rs += msgPrefix+'应不小于'+minValue+'\r\n';
  471. }
  472. if(maxValue!=null&&(parseInt(value) > parseInt(maxValue)&&maxValue!="+")){
  473. rs += msgPrefix+'应不大于'+maxValue+'\r\n';
  474. }
  475. // if(decimalLength!=null&&!reg.test(value)){
  476. var arr=value.toString().split(".");
  477. if(arr.length>1&&arr[1].length>parseInt(decimalLength)){
  478. rs += msgPrefix+'小数部分应不多于'+decimalLength+'位。\r\n';
  479. }
  480. }
  481. }
  482. return rs;
  483. }
  484. /**
  485. * 整数校验器
  486. */
  487. wd.commonValidator.int =
  488. function(valueArr,//保存所有被校验的表单值的数组
  489. params//校验器的其余参数
  490. ){
  491. var rs = '';
  492. var value = valueArr[0];
  493. var msgPrefix = params['msgPrfx'];//消息头
  494. var minValue = params['minVal'];//最小数值
  495. var maxValue = params['maxVal'];//最大数值
  496. var regValue = new RegExp('^[1-9]*[1-9][0-9]*$');
  497. var notNull = params['notBlank']==null?false:params['notBlank'];
  498. if(notNull){
  499. rs += wd.commonValidator.notNull(valueArr,params);
  500. }else{
  501. rs += wd.commonValidator.validator(valueArr,params);
  502. }
  503. //minValue值不指定默认为0
  504. if(!minValue){
  505. minValue="0";
  506. }
  507. if(value!=null&&value!=''){
  508. // if(value != 0 && !regValue.test(value)){
  509. // rs += msgPrefix+'应为正整数!\r\n';
  510. // }
  511. if(isNaN(value)){
  512. rs += msgPrefix+'应为整数!\r\n';
  513. }
  514. if(minValue!=null && (parseInt(value) < parseInt(minValue)&&minValue!="-")){
  515. rs += msgPrefix+'应不小于'+minValue+'\r\n';
  516. }
  517. if(maxValue!=null&&(parseInt(value) > parseInt(maxValue)&&maxValue!="+")){
  518. rs += msgPrefix+'应不大于'+maxValue+'\r\n';
  519. }
  520. }
  521. return rs;
  522. }
  523. /**
  524. * 2022-3-1 新加的整数校验器,isInt不知谁改成了数字校验器!!
  525. */
  526. wd.commonValidator.isInteger =
  527. function(valueArr,//保存所有被校验的表单值的数组
  528. params//校验器的其余参数
  529. ){
  530. var rs = '';
  531. var value = valueArr[0];
  532. var msgPrefix = params['msgPrfx'];//消息头
  533. var minValue = params['minVal'];//最小数值
  534. var maxValue = params['maxVal'];//最大数值
  535. var regValue = new RegExp('^[1-9]*[1-9][0-9]*$');
  536. var notNull = params['notBlank']==null?false:params['notBlank'];
  537. if(notNull){
  538. rs += wd.commonValidator.notNull(valueArr,params);
  539. }
  540. rs += wd.commonValidator.validator(valueArr,params);
  541. if(value!=null&&value!=''){
  542. if(value != 0 && !regValue.test(value)){
  543. rs += msgPrefix+'应为正整数!\r\n';
  544. }
  545. if(!rs&&minValue&& value <minValue){
  546. rs += msgPrefix+'应不小于'+minValue+'\r\n';
  547. }
  548. if(!rs&&maxValue&&value>maxValue){
  549. rs += msgPrefix+'应不大于'+maxValue+'\r\n';
  550. }
  551. }
  552. return rs;
  553. }
  554. /**
  555. * 金额数校验器
  556. */
  557. wd.commonValidator.money =
  558. function(valueArr,//保存所有被校验的表单值的数组
  559. params//校验器的其余参数
  560. ){
  561. var rs = '';
  562. var value = valueArr[0];
  563. var msgPrefix = params['msgPrfx'];//消息头
  564. var reg = new RegExp('^\\d+(\\.\\d{0,2})?$');
  565. var regValue = new RegExp('^\\d+(\\.\\d+)?$');
  566. rs += wd.commonValidator.float(valueArr,params);
  567. if(regValue.test(value)&&value!=null&&value!=''&&!reg.test(value)){
  568. rs += msgPrefix+'小数部分应在两位以内。\r\n';
  569. }
  570. return rs;
  571. }
  572. /**
  573. * 公共校验器
  574. */
  575. wd.commonValidator.validator =
  576. function(valueArr,//保存所有被校验的表单值的数组
  577. params//校验器的其余参数
  578. ){
  579. var rs = '';
  580. var value = valueArr[0];
  581. var msgPrefix = params['msgPrfx'];//消息头
  582. var noBlank = params['notBlank']==null?false:params['notBlank'];
  583. var minLength = params['minLen'];
  584. var maxLength = params['maxLen'];
  585. var length = params['len'];
  586. var regNoBlank = /\s/g;
  587. var regMin = new RegExp("^.{"+minLength+",}$");
  588. var regMax = new RegExp("^.{0,"+maxLength+"}$");
  589. var regScope = new RegExp("^.{"+minLength+","+maxLength+"}$");
  590. var regLength = new RegExp("^.{"+length+"}$");
  591. if(value!=null&&value!=''){
  592. if(noBlank&&regNoBlank.test(value)){
  593. rs += msgPrefix+'不能含空格!\r\n';
  594. }
  595. if(minLength!=null&&!(value.length>=minLength)){
  596. rs += msgPrefix+'应至少'+minLength+'个字符!\r\n';
  597. }else if(maxLength!=null&&minLength!=null&&(value.length>=minLength&&value.length<=maxLength)){
  598. //rs += msgPrefix+'必需在'+minLength+' ~'+maxLength+'!\r\n';
  599. }else if(maxLength!=null&&!(value.length<=maxLength)){
  600. rs += msgPrefix+'长度应不超过'+maxLength+'\r\n';
  601. }
  602. if(length!=null&&!(value.length==length)){
  603. rs += msgPrefix+'必需等于'+length+'!\r\n';
  604. }
  605. }
  606. return rs;
  607. }
  608. /**
  609. * 内容管理技术规范的编码规则:[a-zA-Z_0-9] 和减号 校验器
  610. */
  611. wd.commonValidator.contentCodeRule =
  612. function(valueArr,//保存所有被校验的表单值的数组
  613. params//校验器的其余参数
  614. ){
  615. var rs = '';
  616. var value = valueArr[0];
  617. var msgPrefix = params['msgPrfx'];//消息头
  618. var regValue = new RegExp('^[\w-]+$');
  619. var notNull = params['notBlank']==null?false:params['notBlank'];
  620. if(notNull){
  621. rs += wd.commonValidator.notNull(valueArr,params);
  622. }else{
  623. rs += wd.commonValidator.validator(valueArr,params);
  624. }
  625. if(value!=null&&value!=''){
  626. if(value != 0 && !regValue.test(value)){
  627. rs += msgPrefix+'必需由字母、数字、减号、下划线组成!\r\n';
  628. }
  629. }
  630. return rs;
  631. }
  632. /**
  633. * 页码,只允许字母和数字
  634. */
  635. wd.commonValidator.pageNum =
  636. function(valueArr,//保存所有被校验的表单值的数组
  637. params//校验器的其余参数
  638. ){
  639. var rs = '';
  640. var value = valueArr[0];
  641. var msgPrefix = params['msgPrfx'];//消息头
  642. var regValue = new RegExp('^[\\da-zA-Z]+$');
  643. var notNull = params['notBlank']==null?false:params['notBlank'];
  644. if(notNull){
  645. rs += wd.commonValidator.notNull(valueArr,params);
  646. }else{
  647. rs += wd.commonValidator.validator(valueArr,params);
  648. }
  649. if(value!=null&&value!=''){
  650. if(value != 0 && !regValue.test(value)){
  651. rs += msgPrefix+'必需由字母、数字组成!\r\n';
  652. }
  653. }
  654. return rs;
  655. }
  656. /**
  657. * 英文名
  658. * 由数字、字母和下划线组成,长度为2-30个字符
  659. */
  660. wd.commonValidator.enName = function(valueArr, params){
  661. var rs = '';
  662. var value = valueArr[0];
  663. var msgPrefix = params['msgPrfx'];
  664. var regValue = new RegExp('^\\w{2,30}$');
  665. var notNull = params['notBlank'] == null ? false : params['notBlank'];
  666. if(notNull){
  667. rs += wd.commonValidator.notNull(valueArr, params);
  668. }
  669. if(value != null && value != ''){
  670. if(!regValue.test(value)){
  671. rs += msgPrefix + '只能由数字、字母和下划线组成,长度为2-30个字符!\r\n';
  672. }
  673. // var ryid =$('#ryid').val()||$('input[name=ryid]').val();
  674. var ryid=this.getElementValue("ryid");
  675. var cb = $.ajax({type: "post",
  676. url: "/service?&ssServ=ry_yzywm",
  677. data:{'userywm':valueArr.toString(), 'ryid': ryid},
  678. cache:false,
  679. async:false,
  680. dataType: "json" });
  681. if(cb.status==404){
  682. rs+="服务器连接失败!刷新页面";
  683. }else{
  684. var queryData = cb.responseJSON;
  685. if(queryData.isFind != "false"){
  686. rs+="英文名已存在!";
  687. }
  688. }
  689. }
  690. return rs;
  691. }
  692. wd.commonValidator.csenName = function(valueArr, params){
  693. var rs = '';
  694. var value = valueArr[0];
  695. var msgPrefix = params['msgPrfx'];
  696. var regValue = new RegExp('^\\w{2,30}$');
  697. var notNull = params['notBlank'] == null ? false : params['notBlank'];
  698. if(notNull){
  699. rs += wd.commonValidator.notNull(valueArr, params);
  700. }
  701. if(value != null && value != ''){
  702. if(!regValue.test(value)){
  703. rs += msgPrefix + '只能由数字、字母和下划线组成,长度为2-30个字符!\r\n';
  704. }
  705. // var ryid =$('#ryid').val()||$('input[name=ryid]').val();
  706. var ryid=this.getElementValue("ryid");
  707. var cb = $.ajax({type: "post",
  708. url: "/service?&ssServ=csry_yzywm",
  709. data:{'userywm':valueArr.toString(), 'ryid': ryid},
  710. cache:false,
  711. async:false,
  712. dataType: "json" });
  713. if(cb.status==404){
  714. rs+="服务器连接失败!刷新页面";
  715. }else{
  716. var queryData = cb.responseJSON;
  717. if(queryData.isFind != "false"){
  718. rs+="英文名已存在!";
  719. }
  720. }
  721. }
  722. return rs;
  723. }
  724. /**
  725. * 域名唯一
  726. *
  727. */
  728. wd.commonValidator.ymwy = function(valueArr, params){
  729. var rs = '';
  730. var value = valueArr[0];
  731. var msgPrefix = params['msgPrfx'];//消息头
  732. var regValue = new RegExp('^[\w-]+$');
  733. var notNull = params['notBlank']==null?false:params['notBlank'];
  734. if(notNull){
  735. rs += wd.commonValidator.notNull(valueArr, params);
  736. }
  737. if(value!=null&&value!=''){
  738. // var wangzid = ($('input[name="wangzid"]') != undefined ? $('input[name="wangzid"]').val() : $('#wangzid').val());
  739. var wangzid=this.getElementValue("wangzid");
  740. var cb = $.ajax({
  741. type:'post' ,
  742. url:"/service?ssServ=grwzbj_wz_ym_wy",
  743. data:{
  744. ym:value,
  745. wangzid:wangzid
  746. },
  747. dataType:"json",
  748. async:false,
  749. });
  750. if(cb.status==404){
  751. rs+="服务器连接失败!刷新页面";
  752. }else{
  753. var queryData = cb.responseJSON;
  754. if(queryData.isFind != false){
  755. rs+="域名已存在!";
  756. }
  757. }
  758. }
  759. return rs;
  760. }
  761. /**
  762. * 附件是否为空校验
  763. * @param {*} valueArr
  764. * @param {*} params
  765. * @returns
  766. */
  767. wd.commonValidator.fjNotNull =
  768. function(valueArr,//保存所有被校验的表单值的数组
  769. params//校验器的其余参数
  770. ){
  771. var rs = '';
  772. var msgPrefix = params['msgPrfx'];//消息头
  773. //var nrid = this.getElementValue("fjid");
  774. var nrid=valueArr[0];
  775. if (!nrid) {
  776. rs += msgPrefix+'不能为空!\r\n';
  777. } else {
  778. $.ajax({
  779. async: false,
  780. type: "post",
  781. url: "/service?ssServ=wrCcmsList", // =getSubNrCount",。Lin
  782. data: {
  783. nrid: "T-" + nrid,
  784. jlztm:1
  785. },
  786. dataType: "json", // 增加,统一 Ajax 返回标准 -- .ssCode、.ssMsg、.ssData。Lin
  787. success: function (data) {
  788. /* 改,增加错误处理 -- 统一 Ajax 返回标准 -- .ssCode、.ssMsg、.ssData。Lin
  789. * 去掉 JSON.parse(,改为用 Map<String, Object> 传输
  790. var names = JSON.parse(data);
  791. */
  792. if (data.ssCode != 0) {
  793. alert(data.ssMsg);
  794. return;
  795. }
  796. var names = data.ssData;
  797. var isArray = $.isArray(names);
  798. if (!isArray || names.length <= 0) {
  799. rs += msgPrefix+'不能为空!\r\n';
  800. }
  801. },
  802. error: function (data) {
  803. console.log(data);
  804. }
  805. })
  806. }
  807. rs += wd.commonValidator.validator(valueArr,params);
  808. return rs;
  809. }
  810. /**
  811. * 大于
  812. * @param {Object} valueArr
  813. * @param {Object} params
  814. */
  815. wd.commonValidator.greater = function(valueArr, params){
  816. var rs = '';
  817. var msgPrefix = params['msgPrfx'];//消息头
  818. var pp=msgPrefix.split(/,/);
  819. msgPrefix=pp[0]+"大于"+pp[1]+"! \r\n";
  820. if(valueArr.length<2){
  821. return rs;
  822. }
  823. var leftValue=valueArr[0];
  824. var rightValue=valueArr[1];
  825. if(!leftValue||!rightValue){
  826. return rs;
  827. }
  828. var eq =typeof params['equal']=="undefined"?false:params['equal'];//包括大小相等
  829. if(!!parseFloat(leftValue)&&!!parseFloat(rightValue) ){
  830. if(eq){
  831. if(parseFloat(leftValue)<parseFloat(rightValue)){
  832. // console.log(arguments);
  833. rs += msgPrefix;
  834. }
  835. }else{
  836. if(parseFloat(leftValue)<=parseFloat(rightValue)){
  837. // console.log(arguments);
  838. rs += msgPrefix;
  839. }
  840. }
  841. }
  842. return rs;
  843. }
  844. /**
  845. * 小于
  846. * @param {Object} valueArr
  847. * @param {Object} params
  848. */
  849. wd.commonValidator.less = function(valueArr, params){
  850. var rs = '';
  851. var msgPrefix = params['msgPrfx'];//消息头
  852. var pp=msgPrefix.split(/,/);
  853. msgPrefix=pp[0]+"小于"+pp[1]+"! \r\n";
  854. var eq =typeof params['equal']=="undefined"?false:params['equal'];//包括大小相等
  855. if(valueArr.length>=2&&!!parseFloat(valueArr[0])&&!!parseFloat(valueArr[1]) ){
  856. if(eq){
  857. if(parseFloat(valueArr[0])>parseFloat(valueArr[1])){
  858. // console.log(arguments);
  859. rs += msgPrefix;
  860. }
  861. }else{
  862. if(parseFloat(valueArr[0])>=parseFloat(valueArr[1])){
  863. // console.log(arguments);
  864. rs += msgPrefix;
  865. }
  866. }
  867. }
  868. return rs;
  869. }
  870. /**
  871. * 不等于
  872. * @param {Object} valueArr
  873. * @param {Object} params
  874. */
  875. wd.commonValidator.notEqual = function(valueArr, params){
  876. var rs = '';
  877. var msgPrefix = params['msgPrfx'];//消息头
  878. var pp=msgPrefix.split(/,/);
  879. console.log(valueArr);
  880. for(var i=0;i<valueArr.length;i++){
  881. if(!valueArr[i])continue;
  882. var index=valueArr.indexOf(valueArr[i],i+1);
  883. if(index!=-1){
  884. rs+=pp[i]+"和"+pp[index]+"不能相同!\r\n";
  885. break;
  886. }
  887. }
  888. return rs;
  889. }
  890. wd.commonValidator.condition=function(valueArr, params){
  891. //满足条件才会校验
  892. if(params['condition']){
  893. try{
  894. //xybalxm:["51"]
  895. var condition=eval("({"+params['condition']+"})");
  896. for(var key in condition){
  897. var n=this.getElementValue(key);
  898. if(condition[key].indexOf(n)==-1){
  899. return false;
  900. }
  901. }
  902. }catch(e){
  903. console.log(e);
  904. }
  905. }
  906. return true;
  907. }
  908. /**
  909. * 数值是否已存在校验
  910. * @param {*} valueArr
  911. * @param {*} params
  912. * @returns
  913. */
  914. wd.commonValidator.exists = function(valueArr, params){
  915. var rs = '';
  916. //表名
  917. var table = params['tab']; // ['table']。Lin
  918. //字段名
  919. var field = params['field'];
  920. //数值
  921. var value = valueArr[0];
  922. //主键
  923. /* 改为改用 对象ID。Lin
  924. var id = this.getElementValue("validationId");;
  925. */
  926. /* 再改,ID 字段名由上层决定。Lin
  927. var id = this.getElementValue(table+"id");
  928. */
  929. var idName = params['id'];
  930. var id = this.getElementValue(idName);
  931. if(value!=null&&value!=''){
  932. var cb = $.ajax({type: "post",
  933. url: "/service?&ssServ=chkNotDup", // =value_exists_validation。Lin
  934. /* 再改,增加 "idName" -- ID 字段名由上层决定。Lin
  935. data:{'table':table, 'field': field, 'value': value, 'id': id},
  936. */ data:{'table':table, 'field': field, 'value': value, 'id': id, 'idName': idName},
  937. cache:false,
  938. async:false,
  939. dataType: "json" });
  940. var queryData = cb.responseJSON;
  941. if(queryData.isFind != "false"){
  942. rs= params['msg'];
  943. }
  944. }
  945. return rs;
  946. }
  947. // 增加,多个字段值是否匹配。Lin
  948. // <notMatch field="jfrxm,jfrgrdh" parm="{relField:'jfrxm,jfrgrdh',srcTab:'ry',srcField:['xm','grdh']}"/>
  949. wd.commonValidator.chkNotMatch = function(valueArr, params){
  950. var rs = '';
  951. //表名
  952. var table = params['srcTab']; // "ry"(人员)。Lin
  953. //字段名
  954. var field = params['srcField']; // "xm,grdh"(姓名,个人电话)。Lin
  955. //数值
  956. /* 增加 parm="{relField:'jfrxm,jfrgrdh', -- 相关的页面字段。Lin
  957. * 去掉原来的 <ichker defField="['sfzh','csrq','xbm']
  958. * value,串成 "张三,12345"
  959. var value = valueArr[0];
  960. */
  961. var relField = params['relField']; // "jfrxm,jfrgrdh"(接访人姓名,接访人个人电话)。Lin
  962. if (relField == null || relField == "")
  963. return rs;
  964. var value = "";
  965. var fieldArr = relField.split(",");
  966. for(var i = 0; i < fieldArr.length; i++) {
  967. var v = this.getElementValue(fieldArr[i]);
  968. if (v == null || v == "") {
  969. value = "";
  970. break;
  971. }
  972. if (value != "")
  973. value += ",";
  974. value += v.trim();
  975. }
  976. if (value == "")
  977. return rs;
  978. var cb = $.ajax({type: "post",
  979. url: "/service?&ssServ=chkNotMatch",
  980. data:{'table':table, 'field': field, 'value': value},
  981. cache:false,
  982. async:false,
  983. dataType: "json" });
  984. var queryData = cb.responseJSON;
  985. if (queryData.isMatch == "false") {
  986. rs= params['msg'];
  987. }
  988. return rs;
  989. }
  990. // 增加,最少选一个(alo = at least one)。Lin
  991. // <notBlank field="zh|ywm|ryh"/>
  992. // 加载时生成 parm="{relField:'zh,ywm,ryh'
  993. wd.commonValidator.chkAlo = function(valueArr, params){
  994. var rs = '';
  995. /// 抄自 wd.commonValidator.notNull(。Lin
  996. var regTrim = /(^\s+)|(\s+$)/;
  997. var value = valueArr[0];
  998. if (value && regTrim.test(value))
  999. rs += '前后不能包含空格!<br>';
  1000. ///
  1001. var relField = params['relField']; // "zh,ywm,ryh"(账号、英文名、人员号)。Lin
  1002. if (relField == null || relField == "")
  1003. return rs;
  1004. var pass = false;
  1005. var fieldArr = relField.split(",");
  1006. for (var i = 0; i < fieldArr.length; i++) {
  1007. var v = this.getElementValue(fieldArr[i]);
  1008. if (v) {
  1009. v = v.trim();
  1010. if (v) {
  1011. pass = true;
  1012. break;
  1013. }
  1014. }
  1015. }
  1016. if (!pass)
  1017. rs += params['msgPrfx'] +" 不能全为空"
  1018. return rs;
  1019. }