Extjs表单的数据校验以及正则表达式校验

页面导航:首页 > 网络编程 > JavaScript > Extjs表单的数据校验以及正则表达式校验

Extjs表单的数据校验以及正则表达式校验

来源: 作者: 时间:2016-02-02 09:59 【

Extjs表单验证包括空验证、用vtype 26684;式进行简单的验证、高级自定义密码验证、使用正则表达式验证等等。验证可以使用js提供的脚本来进行代码编写,但ext本身对表单进行了封装,并
Extjs表单验证包括空验证、用vtype格式进行简单的验证、高级自定义密码验证、使用正则表达式验证等等。验证可以使用js提供的脚本来进行代码编写,但ext本身对表单进行了封装,并允许客户对其进行扩展,因此使用Extjs提供的验证能够大大简化验证判断。 在验证之前,先看下面两个语句:
//放在onReady的function(){}中 
Ext.QuickTips.init(); //为组件提供提示信息功能,form的主要提示信息就是客户端验证的错误信息。 
Ext.form.Field.prototype.msgTarget='side'; //提示的方式,枚举值为: 
qtip-当鼠标移动到控件上面时显示提示;
title-在的标题显示,但是测试结果是和qtip一样的;
under-在控件的底下显示错误提示;
side-在控件右边显示一个错误图标,鼠标指向图标时显示错误提示. 默认值;
id-[element id]错误提示显示在指定id的HTML元件中

1.一个最简单的例子:空验证
代码如下:
//空验证的两个参数 
allowBlank:false//false则不能为空,默认为true 
blankText:string//当为空时的错误提示信息 

js代码为:
代码如下:
var form1 = new Ext.form.FormPanel({ 
width:350, 
renderTo:"form1", 
title:"FormPanel", 
defaults:{xtype:"textfield",inputType:"password"}, 
items:[ 
{fieldLabel:"不能为空", 
allowBlank:false, //不允许为空 
blankText:"不能为空", //错误提示信息,默认为This field is required! 
id:"blanktest", 
} 
] 
}); 

2.用vtype格式进行简单的验证。
在此举邮件验证的例子,重写上面代码的items配置:
代码如下:
items:[ 
{fieldLabel:"不能为空", 
vtype:"email",//email格式验证 
vtypeText:"不是有效的邮箱地址",//错误提示信息,默认值我就不说了 
id:"blanktest", 
anchor:"90%" 
} 


你可以修改上面的vtype为以下的几种extjs的vtype默认支持的验证:
//form验证中vtype的默认支持类型

1.alpha //只能输入字母,无法输入其他(如数字,特殊符号等)
2.alphanum//只能输入字母和数字,无法输入其他
3.email//email验证,要求的格式是""
4.url//url格式验证,要求的格式是http://www.baidu.com

3.高级自定义密码验证
前面的验证都是extjs已经提供的,我们也可以自定义验证函数。
代码如下:
//先用Ext.apply方法添加自定义的password验证函数(也可以取其他的名字)
Ext.apply(Ext.form.VTypes,{ 
password:function(val,field){//val指这里的文本框值,field指这个文本框,大家要明白这个意思 
if(field.confirmTo){//confirmTo是我们自定义的配置参数,一般用来保存另外的组件的id值 
var pwd=Ext.get(field.confirmTo);//取得confirmTo的那个id的值 
return (val==pwd.getValue()); 
} 
return true; 
} 
}); 


//配置items参数
items:[{fieldLabel:"密码", 
id:"pass1", 
},{ 
fieldLabel:"确认密码", 
id:"pass2", 
vtype:"password",//自定义的验证类型 
vtypeText:"两次密码不一致!", 
confirmTo:"pass1",//要比较的另外一个的组件的id 
} 

4.使用正则表达式验证
代码如下:
new Ext.form.TextField({ 
fieldLabel : "姓名", 
name : "author_nam", 
regex : /[\u4e00-\u9fa5]/, //正则表达式在/...../之间. [\u4e00-\u9fa5] : 只能输入中文. 
regexText:"只能输入中文!", //正则表达式错误提示 
allowBlank : false //此验证依然有效.不许为空.
 })


我的项目截图:

\

\



一些自定义验证函数
  1. Ext.apply(Ext.form.VTypes,
  2. {
  3. daterange: function(val, field)
  4. {
  5. var date = field.parseDate(val);
  6. // We need to force the picker to update values to recaluate the disabled dates display
  7. var dispUpd = function(picker)
  8. {
  9. var ad = picker.activeDate;
  10. picker.activeDate = null;
  11. picker.update(ad);
  12. };
  13. if (field.startDateField)
  14. {
  15. var sd = Ext.getCmp(field.startDateField);
  16. sd.maxValue = date;
  17. if (sd.menu && sd.menu.picker)
  18. {
  19. sd.menu.picker.maxDate = date;
  20. dispUpd(sd.menu.picker);
  21. }
  22. }
  23. else if (field.endDateField)
  24. {
  25. var ed = Ext.getCmp(field.endDateField);
  26. ed.minValue = date;
  27. if (ed.menu && ed.menu.picker)
  28. {
  29. ed.menu.picker.minDate = date;
  30. dispUpd(ed.menu.picker);
  31. }
  32. }
  33. return true;
  34. },
  35. password: function(val, field)
  36. {
  37. if (field.initialPassField)
  38. {
  39. var pwd = Ext.getCmp(field.initialPassField);
  40. return (val == pwd.getValue());
  41. }
  42. return true;
  43. },
  44. passwordText: '两次输入的密码不一致!',
  45. chinese:function(val,field)
  46. {
  47. var reg = /^[/u4e00-/u9fa5]+$/i;
  48. if(!reg.test(val))
  49. {
  50. return false;
  51. }
  52. return true;
  53. },
  54. chineseText:'请输入中文',
  55. age:function(val,field)
  56. {
  57. try
  58. {
  59. if(parseInt(val) >= 18 && parseInt(val) <= 100)
  60. return true;
  61. return false;
  62. }
  63. catch(err)
  64. {
  65. return false;
  66. }
  67. },
  68. ageText:'年龄输入有误',
  69. alphanum:function(val,field)
  70. {
  71. try
  72. {
  73. if(!//W/.test(val))
  74. return true;
  75. return false;
  76. }
  77. catch(e)
  78. {
  79. return false;
  80. }
  81. },
  82. alphanumText:'请输入英文字母或是数字,其它字符是不允许的.',
  83. url:function(val,field)
  84. {
  85. try
  86. {
  87. if(/^(http|https|ftp):////(([A-Z0-9][A-Z0-9_-]*)(/.[A-Z0-9][A-Z0-9_-]*)+)(:(/d+))?//?/i.test(val))
  88. return true;
  89. return false;
  90. }
  91. catch(e)
  92. {
  93. return false;
  94. }
  95. },
  96. urlText:'请输入有效的URL地址.',
  97. max:function(val,field)
  98. {
  99. try
  100. {
  101. if(parseFloat(val) <= parseFloat(field.max))
  102. return true;
  103. return false;
  104. }
  105. catch(e)
  106. {
  107. return false;
  108. }
  109. },
  110. maxText:'超过最大值',
  111. min:function(val,field)
  112. {
  113. try
  114. {
  115. if(parseFloat(val) >= parseFloat(field.min))
  116. return true;
  117. return false;
  118. }
  119. catch(e)
  120. {
  121. return false;
  122. }
  123. },
  124. minText:'小于最小值',
  125. datecn:function(val,field)
  126. {
  127. try
  128. {
  129. var regex = /^(/d{4})-(/d{2})-(/d{2})$/;
  130. if(!regex.test(val)) return false;
  131. var d = new Date(val.replace(regex, '$1/$2/$3'));
  132. return (parseInt(RegExp.$2, 10) == (1+d.getMonth())) && (parseInt(RegExp.$3, 10) == d.getDate())&&(parseInt(RegExp.$1, 10) == d.getFullYear());
  133. }
  134. catch(e)
  135. {
  136. return false;
  137. }
  138. },
  139. datecnText:'请使用这样的日期格式: yyyy-mm-dd. 例如:2008-06-20.',
  140. integer:function(val,field)
  141. {
  142. try
  143. {
  144. if(/^[-+]?[/d]+$/.test(val))
  145. return true;
  146. return false;
  147. }
  148. catch(e)
  149. {
  150. return false;
  151. }
  152. },
  153. integerText:'请输入正确的整数',
  154. minlength:function(val,field)
  155. {
  156. try
  157. {
  158. if(val.length >= parseInt(field.minlen))
  159. return true;
  160. return false
  161. }
  162. catch(e)
  163. {
  164. return false;
  165. }
  166. },
  167. minlengthText:'长度过小',
  168. maxlength:function(val,field)
  169. {
  170. try
  171. {
  172. if(val.length <= parseInt(field.maxlen))
  173. return true;
  174. return false;
  175. }
  176. catch(e)
  177. {
  178. return false;
  179. }
  180. },
  181. maxlengthText:'长度过大',
  182. ip:function(val,field)
  183. {
  184. try
  185. {
  186. if((/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(val)))
  187. return true;
  188. return false;
  189. }
  190. catch(e)
  191. {
  192. return false;
  193. }
  194. },
  195. ipText:'请输入正确的IP地址',
  196. phone:function(val,field)
  197. {
  198. try
  199. {
  200. if(/^((0[1-9]{3})?(0[12][0-9])?[-])?/d{6,8}$/.test(val))
  201. return true;
  202. return false;
  203. }
  204. catch(e)
  205. {
  206. return false;
  207. }
  208. },
  209. phoneText:'请输入正确的电话号码,如:0920-29392929',
  210. mobilephone:function(val,field)
  211. {
  212. try
  213. {
  214. if(/(^0?[1][35][0-9]{9}$)/.test(val))
  215. return true;
  216. return false;
  217. }
  218. catch(e)
  219. {
  220. return false;
  221. }
  222. },
  223. mobilephoneText:'请输入正确的手机号码',
  224. alpha:function(val,field)
  225. {
  226. try
  227. {
  228. if( /^[a-zA-Z]+$/.test(val))
  229. return true;
  230. return false;
  231. }
  232. catch(e)
  233. {
  234. return false;
  235. }
  236. },
  237. alphaText:'请输入英文字母'
  238. });
Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<