sencha touch Model validations 自定义验证 二选一输入验证、重复验证、时间验证、比较验证、条件验证(2015-1-14)...
项目初始化时执行以下代码
1 //重写模型,方便进行自定义验证 2 Ext.define("Ext.zh.data.Model", { 3 override: "Ext.data.Model", 4 validate: function () { 5 var errors = Ext.create('Ext.data.Errors'), 6 validations = this.getValidations().items, 7 validators = Ext.data.Validations, 8 length, 9 validation, 10 field, 11 valid, 12 type, 13 i; 14 if (validations) { 15 length = validations.length; 16 for (i = 0; i < length; i++) { 17 validation = validations[i]; 18 field = validation.field || validation.name; 19 type = validation.type; 20 //这里重写了代码,验证时将模型做参数加入 21 //方便进行验证 22 valid = validators[type](validation, this.get(field), this); 23 if (!valid) { 24 errors.add(Ext.create('Ext.data.Error', { 25 field: field, 26 message: validation.message || validators.getMessage(type) 27 })); 28 } 29 } 30 } 31 return errors; 32 } 33 }); 34 //自定义验证,这里就多了个formData就可以获取到所有数据,能方便验证 35 Ext.apply(Ext.data.validations, { 36 chooseOneMessage: '验证字段与指定字段之中只能有一个字段有值', 37 //验证字段与指定字段之中只能有一个字段有值 38 //这个值可以验证非空或者通过正则表达式验证 39 //forComparison 指定字段 40 //matcher 正则表达式 41 chooseOne: function (config, value, formData) { 42 var name = config.forComparison, 43 otherValue = formData.data[name], 44 matcher; 45 if (value && otherValue) { 46 return false; 47 } 48 value = value || otherValue; 49 matcher = config.matcher; 50 if (matcher) { 51 return !!(matcher && matcher.test(value)); 52 } 53 return true; 54 }, 55 //验证字段与指定字段的值必须一致 56 //可用于修改密码时验证重复密码 57 //forComparison 指定字段 58 repeat: function (config, value, formData) { 59 var otherValue = formData.data[config.forComparison]; 60 if (value != otherValue) { 61 return false; 62 } 63 return true; 64 }, 65 repeatOneMessage: '两次输入不一致', 66 //时间验证,只能验证时间 67 //验证字段的值不能大于当前时间 68 //dateFormat 时间格式化格式,这样时间值就不必是标准格式 69 //dateFormat(例子)'Y-m-d H:i:s', 值为 2014-01-01 21:23:21就可以直接验证了 70 timeCheck: function (config, value) { 71 var dateFormat = config.dateFormat; 72 if (dateFormat) { 73 value = Ext.Date.parse(value, dateFormat, true); 74 } 75 if (value > new Date()) { 76 return false; 77 } 78 return true; 79 }, 80 timeCheckMessage: '验证字段的时间不能大于当前时间', 81 //可以验证数字时间等支持比较的数据类型 82 //验证字段的值不能大于与指定字段的值 83 //dateFormat 时间格式化格式,这样时间值就不必是标准格式 84 //dateFormat (例子)'Y-m-d H:i:s', 值为 2014-01-01 21:23:21就可以直接验证时间了 85 compareTime: function (config, value, formData) { 86 var otherValue = formData.data[config.forComparison], 87 dateFormat = config.dateFormat; 88 if (dateFormat) { 89 value = Ext.Date.parse(value, dateFormat, true); 90 otherValue = Ext.Date.parse(otherValue, dateFormat, true); 91 } 92 if (value > otherValue) { 93 return false; 94 } 95 return true; 96 }, 97 compareTimeMessage: '验证字段的值不能大于与指定字段的值', 98 //指定字段值为指定值时验证字段才进行验证,否则不验证 99 //这个值可以验证非空或者通过正则表达式验证 100 //forComparison 指定字段 101 //matcher 正则表达式 102 //factor 指定字段条件值 103 forOne: function (config, value, formData) { 104 var forValue = formData.data[config.forComparison], 105 factor = config.factor, 106 matcher; 107 if (factor != forValue) { 108 return true; 109 } 110 if (!value) { 111 return false; 112 } 113 matcher = config.matcher; 114 if (matcher) { 115 return !!(matcher && matcher.test(value)); 116 } 117 return true; 118 }, 119 forOneMessage: '某个其他字段值为指定值时才进行验证' 120 });
模型验证用法:
1 field: 'name', 2 //二选一验证 3 type: 'chooseOne', 4 //其他字段 5 forComparison: 'name1', 6 //同时支持正则表达式 7 //重复验证用法类同 8 matcher: /(^[0-9]+(.[0-9]{2})?$)/, 9 message: '请输入name或name1!'
不知道模型验证怎么用的可以看看我以前的文章
http://www.cnblogs.com/mlzs/p/3341175.html
sencha touch Model validations 自定义验证 二选一输入验证、重复验证、时间验证、比较验证、条件验证(2015-1-14)...相关推荐
- 【翻译】在Ext JS和Sencha Touch中创建自定义布局
原文:Creating Custom Layouts in Ext JS and Sencha Touch 布局系统是Sencha框架中最强大和最独特的一部分.布局会处理应用程序中每个组件的大小和位置 ...
- VUE+ElementUI的表单el-from表单验证二选一必填项,并且满足条件后会清除表单验证提示。
效果图: 使用Element-UI的自定义验证实现. 这里面有个坑是,两个input输入框都点出了提示信息,填写任一输入框之后只有操作的那一项的验证提示消失了,不主动清除另一项的验证提示就会一直存在, ...
- Sencha Touch 2.3 自定义主题皮肤,颜色
写博客园越来越懒了,只写重点部分,不明白的可以Q我. 1.当你通过Cmd生成项目之后,App\resources\sass就是我们的样式源文件 2.想自定义自己的样式分为两种方式 扩展:这个是基于st ...
- FPGA(3)验证数字逻辑(与门、与非门、二选一数据选择器、2-4译码器、半加器、全加器)
目录 一.验证与门 二.验证与非门 三.验证二选一数据选择器 四.验证2-4译码器 五.验证半加器 六.验证全加器 0.初始化定义 1.第一个半加器 2.第二个半加器 3.得到最终进位Co 代码 0决 ...
- 【LeetCode】【HOT】98. 验证二叉搜索树(递归)
[LeetCode][HOT]98. 验证二叉搜索树 文章目录 [LeetCode][HOT]98. 验证二叉搜索树 package hot;class TreeNode{int val;TreeNo ...
- 电商平台“二选一” 最后买单的却是商家和消费者
TechWeb 4月27日 文/小渔 拼多多日前对外发布上市后的首份年报,各项数据仍是保持着高速增长的势头.与此同时,创始人黄峥也发布了上市后首封致股东信,言语中透露出对市场中存在的"二选 ...
- 条码标签软件中如何在二维码输入汉字
随着科技的发展,二维码作为一种全新的信息存储.传递和识别技术,其需求在随之经济时代的发展与日俱增.我们可以用条码标签软件来设计二维码,从打打印出来贴在商品上.比如在CODESOFT条码软件中制作符合规 ...
- 表单验证自定义二选一
联系方式二选一 let validateRemindPhone = (rule, value, callback) => { //验证手机号码 const {remindEmail} = thi ...
- 【翻译】Sencha Touch 2入门:创建一个实用的天气应用程序之二
原文地址:http://www.sencha.com/blog/getting-started-with-sencha-touch-2-build-a-weather-utility-app-part ...
最新文章
- 【Python-ML】非线性映射降维-KPCA方法-新样本映射
- CentOS下ZooKeeper单机模式、集群模式安装
- spring mvc hello
- mysql aggregate_SQL语句之Aggregate函数
- RabbitMQ 镜像集群配置_05
- 树莓派 python 无人机_DIY一个基于树莓派和Python的无人机视觉跟踪系统
- DHCP通过NAP认证
- ie9以下兼容html5,兼容ie9以下支持媒体查询和html5
- 射频微电子学_射频人的双十二,应该这样过……
- 搏一搏,单车变摩托!华为天才少年耗时四月将自行车强势升级为自动驾驶
- 计算机操作系统复习题
- linux解压缩包命令
- 正式通知!低学历恭喜了!每人补贴8000元,限本科以下学历,政策扶持,名额有限,速看...
- #python 自动识别视频字幕
- (Hopcroft-Carp二分图匹配)Rain on your Parade
- matlab从excel第二行写,matlab从某行读excel
- html5 lineheight属性,深入理解line-height属性
- c#实现钉钉免登功能
- 考研英语 - word-list-36
- 强引用与弱引用(不太懂,不过文章形容的不错)