项目初始化时执行以下代码

  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)...相关推荐

  1. 【翻译】在Ext JS和Sencha Touch中创建自定义布局

    原文:Creating Custom Layouts in Ext JS and Sencha Touch 布局系统是Sencha框架中最强大和最独特的一部分.布局会处理应用程序中每个组件的大小和位置 ...

  2. VUE+ElementUI的表单el-from表单验证二选一必填项,并且满足条件后会清除表单验证提示。

    效果图: 使用Element-UI的自定义验证实现. 这里面有个坑是,两个input输入框都点出了提示信息,填写任一输入框之后只有操作的那一项的验证提示消失了,不主动清除另一项的验证提示就会一直存在, ...

  3. Sencha Touch 2.3 自定义主题皮肤,颜色

    写博客园越来越懒了,只写重点部分,不明白的可以Q我. 1.当你通过Cmd生成项目之后,App\resources\sass就是我们的样式源文件 2.想自定义自己的样式分为两种方式 扩展:这个是基于st ...

  4. FPGA(3)验证数字逻辑(与门、与非门、二选一数据选择器、2-4译码器、半加器、全加器)

    目录 一.验证与门 二.验证与非门 三.验证二选一数据选择器 四.验证2-4译码器 五.验证半加器 六.验证全加器 0.初始化定义 1.第一个半加器 2.第二个半加器 3.得到最终进位Co 代码 0决 ...

  5. 【LeetCode】【HOT】98. 验证二叉搜索树(递归)

    [LeetCode][HOT]98. 验证二叉搜索树 文章目录 [LeetCode][HOT]98. 验证二叉搜索树 package hot;class TreeNode{int val;TreeNo ...

  6. 电商平台“二选一” 最后买单的却是商家和消费者

     TechWeb 4月27日 文/小渔 拼多多日前对外发布上市后的首份年报,各项数据仍是保持着高速增长的势头.与此同时,创始人黄峥也发布了上市后首封致股东信,言语中透露出对市场中存在的"二选 ...

  7. 条码标签软件中如何在二维码输入汉字

    随着科技的发展,二维码作为一种全新的信息存储.传递和识别技术,其需求在随之经济时代的发展与日俱增.我们可以用条码标签软件来设计二维码,从打打印出来贴在商品上.比如在CODESOFT条码软件中制作符合规 ...

  8. 表单验证自定义二选一

    联系方式二选一 let validateRemindPhone = (rule, value, callback) => { //验证手机号码 const {remindEmail} = thi ...

  9. 【翻译】Sencha Touch 2入门:创建一个实用的天气应用程序之二

    原文地址:http://www.sencha.com/blog/getting-started-with-sencha-touch-2-build-a-weather-utility-app-part ...

最新文章

  1. 【Python-ML】非线性映射降维-KPCA方法-新样本映射
  2. CentOS下ZooKeeper单机模式、集群模式安装
  3. spring mvc hello
  4. mysql aggregate_SQL语句之Aggregate函数
  5. RabbitMQ 镜像集群配置_05
  6. 树莓派 python 无人机_DIY一个基于树莓派和Python的无人机视觉跟踪系统
  7. DHCP通过NAP认证
  8. ie9以下兼容html5,兼容ie9以下支持媒体查询和html5
  9. 射频微电子学_射频人的双十二,应该这样过……
  10. 搏一搏,单车变摩托!华为天才少年耗时四月将自行车强势升级为自动驾驶
  11. 计算机操作系统复习题
  12. linux解压缩包命令
  13. 正式通知!低学历恭喜了!每人补贴8000元,限本科以下学历,政策扶持,名额有限,速看...
  14. #python 自动识别视频字幕
  15. (Hopcroft-Carp二分图匹配)Rain on your Parade
  16. matlab从excel第二行写,matlab从某行读excel
  17. html5 lineheight属性,深入理解line-height属性
  18. c#实现钉钉免登功能
  19. 考研英语 - word-list-36
  20. 强引用与弱引用(不太懂,不过文章形容的不错)

热门文章

  1. 02 面向对象之:类空间问题以及类之间的关系
  2. python-psutil
  3. uva-11111-栈
  4. 不仅仅是商务旗舰,金立M2017的拍照实力同样给力
  5. Mybatis返回Mysql表的自增主键
  6. MySQL数据库备份和还原的常用命令小结
  7. 微信小程序 通过云函数请求http网站接口
  8. Pytorch 网络模型的保存与读取
  9. C语言 使用递归函数计算1到n之和
  10. Franzis CutOut 9 Professional中文版