码迷,mamicode.com
首页 > 其他好文 > 详细

sencha touch Model validations 自定义验证 二选一输入验证、重复验证

时间:2015-01-09 00:00:35      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:

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

 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                 chooseOne: function (config, value, formData) {
40                     var name = config.forComparison,
41                     otherValue = formData.data[name],
42                     matcher;
43                     if (value && otherValue) {
44                         return false;
45                     }
46                     value = value || otherValue;
47                     matcher = config.matcher;
48                     if (matcher) {
49                         return !!(matcher && matcher.test(value));
50                     }
51                     return true;
52                 },
53                 //自定义重复验证
54                 repeatOneMessage: ‘两次输入不一致‘,
55                 repeat: function (config, value, formData) {
56                     otherValue = formData.data[config.forComparison];
57                     if (value != otherValue) {
58                         return false;
59                     }
60                     return true;
61                 }
62             });

模型验证用法:

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 自定义验证 二选一输入验证、重复验证

标签:

原文地址:http://www.cnblogs.com/mlzs/p/4212139.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!