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

  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. 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. 小程序快速部署富文本插件wxParser

    为了解决html2wxml在ios下字体过大问题,又发现一个比较好用的富文本插件:wxParser. 目前 wxParser 支持对一般的富文本内容包括标题.字体大小.对齐和列表等进行解析.同时也支持 ...

  2. install pymongo,mysql

    yum install pymongo yum install MySQL-python

  3. npm install node-sass失败

    Cannot download "https://github.com/sass/node-sass/releases/download/v3.8.0/win32-x64-46_bindin ...

  4. version-script 控制 so的符号输出

    http://blog.sina.com.cn/s/blog_493667730100csde.html https://stackoverflow.com/questions/8129782/ver ...

  5. hdu2255 奔小康赚大钱,最大权匹配,KM算法

    点击打开链接 最大权匹配 KM算法 算法步骤: 设顶点Xi的顶标为a[i],顶点Yi的顶标为b[i] ⅰ.初始时.a[i]为与Xi相关联的边的最大权值.b[j]=0.保证a[i]+b[j]>=w ...

  6. Adobe Photoshop CC2019中文破解版

    今天突发兴致玩PS, 之前安装的是CS6, 下载安装色相环插件后 先采用拷贝文件夹的方式将Coolorus放到plug-in下, 重启发现窗口>扩展程序 这项是灰色的. 于是采用安装coolor ...

  7. Communications link failure due to underlying exception异常处理(转)

    最近的一个项目在Hibernate使用C3P0的连接池,数据库为Mysql.开发测试没有问题,在运行中每个一段长的空闲时间就出现异常: java 代码 org.hibernate.exception. ...

  8. fiddler4 使用教程

    Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据,Fiddler包含了一个强大的基于事件脚本的子系统, ...

  9. Python3自定义http/https请求拦截mitmproxy脚本

    [本文出自天外归云的博客园] 脚本内容 代码如下: from mitmproxy import http, ctx from multiprocessing import Lock class Fil ...

  10. [转]css实现左侧宽度自适应,右侧固定宽度

    原文地址:https://segmentfault.com/a/1190000008411418 页面布局中经常用会遇到左侧宽度自适应,右侧固定宽度,或者左侧宽度固定,右侧自适应.总之就是一边固定宽度 ...