标签:
项目初始化时执行以下代码
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