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

             //重写模型,方便进行自定义验证
Ext.define("Ext.zh.data.Model", {
override: "Ext.data.Model",
validate: function () {
var errors = Ext.create('Ext.data.Errors'),
validations = this.getValidations().items,
validators = Ext.data.Validations,
length,
validation,
field,
valid,
type,
i;
if (validations) {
length = validations.length;
for (i = 0; i < length; i++) {
validation = validations[i];
field = validation.field || validation.name;
type = validation.type;
//这里重写了代码,验证时将模型做参数加入
//方便进行验证
valid = validators[type](validation, this.get(field), this);
if (!valid) {
errors.add(Ext.create('Ext.data.Error', {
field: field,
message: validation.message || validators.getMessage(type)
}));
}
}
}
return errors;
}
});
//自定义验证,这里就多了个formData就可以获取到所有数据,能方便验证
Ext.apply(Ext.data.validations, {
chooseOneMessage: '验证字段与指定字段之中只能有一个字段有值',
//验证字段与指定字段之中只能有一个字段有值
//这个值可以验证非空或者通过正则表达式验证
//forComparison 指定字段
//matcher 正则表达式
chooseOne: function (config, value, formData) {
var name = config.forComparison,
otherValue = formData.data[name],
matcher;
if (value && otherValue) {
return false;
}
value = value || otherValue;
matcher = config.matcher;
if (matcher) {
return !!(matcher && matcher.test(value));
}
return true;
},
//验证字段与指定字段的值必须一致
//可用于修改密码时验证重复密码
//forComparison 指定字段
repeat: function (config, value, formData) {
var otherValue = formData.data[config.forComparison];
if (value != otherValue) {
return false;
}
return true;
},
repeatOneMessage: '两次输入不一致',
//时间验证,只能验证时间
//验证字段的值不能大于当前时间
//dateFormat 时间格式化格式,这样时间值就不必是标准格式
//dateFormat(例子)'Y-m-d H:i:s', 值为 2014-01-01 21:23:21就可以直接验证了
timeCheck: function (config, value) {
var dateFormat = config.dateFormat;
if (dateFormat) {
value = Ext.Date.parse(value, dateFormat, true);
}
if (value > new Date()) {
return false;
}
return true;
},
timeCheckMessage: '验证字段的时间不能大于当前时间',
//可以验证数字时间等支持比较的数据类型
//验证字段的值不能大于与指定字段的值
//dateFormat 时间格式化格式,这样时间值就不必是标准格式
//dateFormat (例子)'Y-m-d H:i:s', 值为 2014-01-01 21:23:21就可以直接验证时间了
compareTime: function (config, value, formData) {
var otherValue = formData.data[config.forComparison],
dateFormat = config.dateFormat;
if (dateFormat) {
value = Ext.Date.parse(value, dateFormat, true);
otherValue = Ext.Date.parse(otherValue, dateFormat, true);
}
if (value > otherValue) {
return false;
}
return true;
},
compareTimeMessage: '验证字段的值不能大于与指定字段的值',
//指定字段值为指定值时验证字段才进行验证,否则不验证
//这个值可以验证非空或者通过正则表达式验证
//forComparison 指定字段
//matcher 正则表达式
//factor 指定字段条件值
forOne: function (config, value, formData) {
var forValue = formData.data[config.forComparison],
factor = config.factor,
matcher;
if (factor != forValue) {
return true;
}
if (!value) {
return false;
}
matcher = config.matcher;
if (matcher) {
return !!(matcher && matcher.test(value));
}
return true;
},
forOneMessage: '某个其他字段值为指定值时才进行验证'
});

模型验证用法:

         field: 'name',
//二选一验证
type: 'chooseOne',
//其他字段
forComparison: 'name1',
//同时支持正则表达式
//重复验证用法类同
matcher: /(^[0-9]+(.[0-9]{2})?$)/,
message: '请输入name或name1!'

不知道模型验证怎么用的可以看看我以前的文章

http://www.cnblogs.com/mlzs/p/3341175.html

sencha touch Model validations 自定义验证 二选一输入验证、重复验证、时间验证、比较验证、条件验证(2015-1-14)的更多相关文章

  1. sencha touch Model validations(模型验证,自定义验证)

    model Ext.define('app.model.Register', { extend: 'Ext.data.Model', requires: ['Ext.data.JsonP'], con ...

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

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

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

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

  4. sencha touch 扩展篇之使用sass自定义主题样式 (上)使用官方的api修改主题样式

    大家知道,sencha touch是通过我们写的js代码来动态渲染单页面生成一个个div+css的html页面来模拟app应用,那么既然是div+css结构的,我们就可以通过修改css样式来自定义我们 ...

  5. ASP.NET MVC Model验证(二)

    ASP.NET MVC Model验证(二) 前言 上篇内容演示了一个简单的Model验证示例,然后在文中提及到Model验证在MVC框架中默认所处的位置在哪?本篇就是来解决这个问题的,并且会描述一下 ...

  6. 第一步 使用sencha touch cmd 4.0 创建项目、打包(加入全局变量、公用类、自定义扩展、资源文件)

    参考资料: http://www.cnblogs.com/qqloving/archive/2013/04/25/3043606.html http://www.admin10000.com/docu ...

  7. sencha touch 入门系列 (二)sencha touch 开发准备

    这是本人第一次写博客教程,没什么经验,文笔也不是很好,写这教程一方面为了巩固自己这段时间的学习成果,一方面帮助大家解决问题,欢迎大家多提建议,指出问题.接下来我们就开始我们的sencha touch开 ...

  8. Sencha Touch 2.2.1 Custom Icon 自定义图标

    ST2.2版本竟然又改变了sass中自定义图标的添加方式,在2.2以前采用的是这种base64的方式,详见:http://www.cnblogs.com/qidian10/archive/2012/1 ...

  9. sencha touch 2.2.1 自定义彩色图标按钮(button+ico)

    sencha touch 2.2.1 这个版本使用了新的按钮模式,不过他只提供了少部分的按钮样式.我们可以加一些自定义的ico样式 新加ico样式lower .x-button .x-button-i ...

随机推荐

  1. PostgreSQL学习手册(角色和权限)

    原文地址:http://www.cnblogs.com/stephen-liu74/archive/2012/05/18/2302639.html PostgreSQL是通过角色来管理数据库访问权限的 ...

  2. 数据分析系统DIY1/3:CentOS7+MariaDB安装纪实

    打算通过实践.系统学习一下数据分析. 初步计划要完毕的三个任务. 一.用VMware装64位CentOS,数据库服务端用CentOS自带的就好. 二.数据採集与预处理用Dev-C++编程解决. 三.用 ...

  3. Linux终端记录神器

    我们在调试程序的时候,免不了要去抓一些 log ,然后进行分析.如果 log 量不是很大的话,那很简单,只需简单的复制粘贴就好.但是如果做一些压力测试,产生大量 log ,而且系统内存又比较小(比如嵌 ...

  4. .NET 并行编程——任务并行

    本文内容 并行编程 任务并行 隐式创建和运行任务 显式创建和运行任务 任务 ID 任务创建选项 创建任务延续 创建分离的子任务 创建子任务 等待任务完成 组合任务 任务中的异常处理 取消任务 Task ...

  5. win32 进程崩溃时禁止弹出错误对话框

    在程序初始化的时候加入以下代码即可: SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX);    _set_abort_behav ...

  6. 简单的redis 的list应用

    error_reporting(E_ALL); if(empty($a)){ echo 111; }else{ echo 3333; } die; phpinfo();die; $redis = ne ...

  7. 8.翻译系列: EF 6中配置领域类(EF 6 Code-First 系列)

    原文地址:http://www.entityframeworktutorial.net/code-first/configure-classes-in-code-first.aspx EF 6 Cod ...

  8. 2018年末--积极拥抱h5.转载 大前端时代来临,我们何去何从?

    1.大前端时代是什么? 大前端时代是WEB统一的时代,利用html5或者6甚至7,不但可以开发传统的网站,做炫酷的网页动态效果,更可以采用BS架构应用程序.开发手机端web应用.移动端Native应用 ...

  9. 基于jQuery鼠标滚轮滑动到页面节点部分

    基于jQuery鼠标滚轮滑动到页面节点部分.这是一款基于jQuery+CSS3实现的使用鼠标滚轮或者手势滑动到页面节点部分特效.效果图如下: 在线预览   源码下载 实现的代码. html代码: &l ...

  10. PHP更改自动加载的顺序

    composer的锅 自从PHPer们用上了composer后,对于传统的加载方式倒是不会用了,可谓是"收之东隅,失之桑榆". 下面说一下怎么改变加载顺序来覆写Laravel中的h ...