sencha touch Model validations 自定义验证 二选一输入验证、重复验证、时间验证、比较验证、条件验证(2015-1-14)
项目初始化时执行以下代码
//重写模型,方便进行自定义验证
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)的更多相关文章
- sencha touch Model validations(模型验证,自定义验证)
model Ext.define('app.model.Register', { extend: 'Ext.data.Model', requires: ['Ext.data.JsonP'], con ...
- 【翻译】在Ext JS和Sencha Touch中创建自定义布局
原文:Creating Custom Layouts in Ext JS and Sencha Touch 布局系统是Sencha框架中最强大和最独特的一部分.布局会处理应用程序中每个组件的大小和位置 ...
- Sencha Touch 2.3 自定义主题皮肤,颜色
写博客园越来越懒了,只写重点部分,不明白的可以Q我. 1.当你通过Cmd生成项目之后,App\resources\sass就是我们的样式源文件 2.想自定义自己的样式分为两种方式 扩展:这个是基于st ...
- sencha touch 扩展篇之使用sass自定义主题样式 (上)使用官方的api修改主题样式
大家知道,sencha touch是通过我们写的js代码来动态渲染单页面生成一个个div+css的html页面来模拟app应用,那么既然是div+css结构的,我们就可以通过修改css样式来自定义我们 ...
- ASP.NET MVC Model验证(二)
ASP.NET MVC Model验证(二) 前言 上篇内容演示了一个简单的Model验证示例,然后在文中提及到Model验证在MVC框架中默认所处的位置在哪?本篇就是来解决这个问题的,并且会描述一下 ...
- 第一步 使用sencha touch cmd 4.0 创建项目、打包(加入全局变量、公用类、自定义扩展、资源文件)
参考资料: http://www.cnblogs.com/qqloving/archive/2013/04/25/3043606.html http://www.admin10000.com/docu ...
- sencha touch 入门系列 (二)sencha touch 开发准备
这是本人第一次写博客教程,没什么经验,文笔也不是很好,写这教程一方面为了巩固自己这段时间的学习成果,一方面帮助大家解决问题,欢迎大家多提建议,指出问题.接下来我们就开始我们的sencha touch开 ...
- Sencha Touch 2.2.1 Custom Icon 自定义图标
ST2.2版本竟然又改变了sass中自定义图标的添加方式,在2.2以前采用的是这种base64的方式,详见:http://www.cnblogs.com/qidian10/archive/2012/1 ...
- sencha touch 2.2.1 自定义彩色图标按钮(button+ico)
sencha touch 2.2.1 这个版本使用了新的按钮模式,不过他只提供了少部分的按钮样式.我们可以加一些自定义的ico样式 新加ico样式lower .x-button .x-button-i ...
随机推荐
- NSURLSession 相关清单
浅析 NSURLSession http://boboshone.com/blog/2013/10/21/nsurlsession-tutorial/ 介绍整体流程结构. iOS NSURL ...
- java线程安全之并发Queue
关闭 原 java线程安全之并发Queue(十三) 2017年11月19日 23:40:23 小彬彬~ 阅读数:12092更多 所属专栏: 线程安全 版权声明:本文为博主原创文章,未经博主允许不 ...
- Neo4j(一)
01-windows下载与安装neo4j https://blog.csdn.net/qq_21383435/article/details/78807024 neo4j的配置文件(图文详解) htt ...
- MySQL 复习笔记
本文内容 SQL 语句 创建数据库 创建数据表 数据完整性约束 四种基本字符类型说明 SQL 基本语句 类型转换函数 日期函数 数学函数 字符串函数 合并结果集 union CASE 函数用法 IF ...
- Class.forName和ClassLoader.loadClass的区别
Class的装载分了三个阶段,loading,linking和initializing,分别定义在The Java Language Specification的12.2,12.3和12.4. Cla ...
- Hadoop2.2.0分布式安装配置详解[3/3]
测试启动 按照下面的每一步执行,执行完一定要看输出的信息,注意warn或error或fatal的情况.因为这都是可能是问题出现的地方.出现一个问题,不解决,可能就会影响接下来的测试.这才是真正的工作量 ...
- CPP Note
hello.cpp -> 编译代码g++ hello.cpp -o a -> a.out 区分大小写的编程语言 内置类型 一些基本类型可以使用一个或多个类型修饰符进行修饰: signed: ...
- sed 简明教程 (转)
sed 简明教程 2013年2月20日 awk于1977年出生,今年36岁本命年,sed比awk大2-3岁,awk就像林妹妹,sed就是宝玉哥哥了.所以 林妹妹跳了个Topless,他的哥哥sed ...
- 怎么去掉Xcodeproject中的某种类型的警告 Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32
问题描写叙述 在我们的项目中,通常使用了大量的第三方代码,这些代码可能非常复杂,我们不敢修改他们,但是作者已经停止更新了,当sdk升级或者是编译器升级后,这些遗留的代码可能会出现许很多多的警告,那么 ...
- [ci]jenkins-slave-ssh docker容器化-自动注入key
jenkins server 再启动slave时候,动态的注入sshkey 只要slave有ssh+jdk即可.无需事先预置用户名密码给slave. 配置 inject ssh key 配置项目 执行 ...