model

 Ext.define('app.model.Register', {
extend: 'Ext.data.Model',
requires: ['Ext.data.JsonP'],
config: {
fields: [{
name: 'mobile',
type: 'int'
},
{
name: 'verifycode',
type: 'int'
},
{
name: 'email',
type: 'string'
},
{
name: 'password',
type: 'string'
},
{
name: 'passwordTwo',
type: 'string'
},
{
name: 'realname',
type: 'string'
},
{
name: 'cityid',
type: 'int'
},
{
name: 'address',
type: 'string'
},
{
name: 'sex',
type: 'int'
},
{
name: 'tService',
type: 'string'
}],
validations: [{
field: 'realname',
type: 'presence',
message: '请输入姓名!'
},
{
field: 'password',
type: 'presence',
message: '请输入密码!'
},
{
field: 'email',
type: 'email',
message: '请输入正确的邮箱地址!'
},
{
field: 'verifycode',
type: 'presence',
message: '请输入验证码!'
},
{
field: 'mobile',
type: 'format',
matcher: /^(1(([35][0-9])|(47)|[8][0126789]))\d{8}$/,
message: '请输入11位手机号码!'
}]
},
//添加自定义验证
validate: function (options) {
var me = this,
errors = me.callParent(arguments),
tService = this.get('tService'),
password = this.get('password'),
passwordConfirm = this.get('passwordTwo');
if (password != passwordConfirm) {
errors.add({
field: 'passwordConfirm',
message: '两次密码输入不一致!'
})
}
if (tService == 'O') {
if (this.get('address') == '') {
errors.add({
field: 'address',
message: '请输入地址!'
})
}
}
return errors;
}
});

视图:

 Ext.define("app.view.user.Register", {
alternateClassName: 'userRegister',
extend: 'Ext.form.Panel',
xtype: 'userRegister',
requires: ['Ext.form.FieldSet', 'Ext.field.Password', 'Ext.field.Email', 'Ext.field.Select', 'Ext.field.Radio', 'Ext.field.Hidden'],
config: {
padding: 10,
title: '注册',
cls: 'fromPanel',
items: [{
xtype: 'hiddenfield',
itemId: 'tService',
name: 'tService'
},
{
xtype: 'fieldset',
iconCls: 'home',
defaults: {
labelWidth: '40%'
},
items: [{
xtype: 'textfield',
name: 'mobile',
placeHolder: '手机号码(点图标取验证码)',
cls: 'user ico x-field-clearable'
},
{
xtype: 'textfield',
name: 'verifycode',
placeHolder: '验证码'
}]
},
{
xtype: 'fieldset',
iconCls: 'home',
defaults: {
labelWidth: '40%'
},
items: [{
xtype: 'emailfield',
name: 'email',
placeHolder: '电子邮件'
},
{
xtype: 'passwordfield',
name: 'password',
placeHolder: '密码'
},
{
xtype: 'passwordfield',
name: 'passwordTwo',
placeHolder: '再次输入密码'
},
{
xtype: 'textfield',
name: 'realname',
placeHolder: '姓名'
},
{
xtype: 'selectfield',
name: 'cityid',
itemId: 'cityid',
valueField: 'areaCode',
displayField: 'cityname'
},
{
itemId: 'address',
xtype: 'textfield',
name: 'address',
placeHolder: '详细地址'
},
{
layout: 'hbox',
items: [{
xtype: 'radiofield',
name: 'sex',
value: '1',
label: '男',
checked: true,
flex: 1
},
{
xtype: 'radiofield',
name: 'sex',
value: '0',
label: '女',
flex: 1
}]
}]
},
{
xtype: 'button',
action: 'register',
text: '提交注册',
ui: 'action'
}]
}
});

验证代码:

 var valid = myUtil.valid('app.model.User', this.getUserLogin());

验证代码中调用的公用类:

 /*公共类*/
Ext.define('myUtil', {
statics: {
/*为Ext.Viewport添加一个消息提示组件*/
addMessage: function () {
Ext.Viewport.setMasked({
xtype: 'loadmask',
cls: 'message',
transparent: true,
indicator: false
});
this.hideMessage();
},
/*显示一个消息提示*/
showMessage: function (mes, autoHide) {
var me = this, message = this.getMessage();
message.setMessage(mes);
message.show();
//是否自动关闭提示
if (autoHide) {
setTimeout(function () {
message.hide();
},
500);
}
},
/*隐藏消息提示*/
hideMessage: function () {
this.getMessage().hide();
},
//消息组件
getMessage: function () {
return Ext.Viewport.getMasked();
},
//验证模型
valid: function (model, from) {
var tmpModel = Ext.create(model),
me = this,
errors, valid;
from.updateRecord(tmpModel);
errors = tmpModel.validate();
valid = errors.isValid();
if (!valid) {
errors.each(function (err) {
me.showMessage(err.getMessage(), true);
return;
});
}
return valid;
}
}
});

sencha touch Model validations(模型验证,自定义验证)的更多相关文章

  1. sencha touch Model validations 自定义验证 二选一输入验证、重复验证、时间验证、比较验证、条件验证(2015-1-14)

    项目初始化时执行以下代码 //重写模型,方便进行自定义验证 Ext.define("Ext.zh.data.Model", { override: "Ext.data.M ...

  2. ASP.NET MVC验证 - 自定义验证规则、验证2个属性值不等【待验证】

    提示:保存后才提示错误信息 自定义验证特性,继承ValidationAttribute并实现IClientValidatable 这次重写了基类的IsValid()方法的另外一个重载,因为该重载包含了 ...

  3. 重写ValidateEntity虚方法实现可控的上下文验证和自定义验证

    上篇文章介绍了ValidationAttribute和IValidatableObject.Validate验证,但是这种验证还是稍微简单了,对于复杂的实体,例如:继承过来的实体.实现某接口的实体等等 ...

  4. Angular:Reactive Form的使用方法和自定义验证器

    本文将介绍Angular(Angular2+)中Reactive Form的有关内容,包括: Reactive Form创建方法 如何使用验证 自定义验证器 下面开始进入正文! Reactive Fo ...

  5. html5外包—长年承接html5外包业务:《Sencha Touch权威指南》下载

    <Sencha Touch权威指南>内容简介:如何才能全面而透彻地理解和掌握移动应用开发框架Sencha Touch并开发出令人心动的移动应用?<Sencha Touch权威指南&g ...

  6. Model Validation(模型验证)

    Model Validation(模型验证) 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/344 ...

  7. Verification of Model Transformations A Survey of the State-of-the-Art 模型转换的验证 对现状的调查

    模型驱动工程范式认为软件开发生命周期由工件(需求规范.分析和设计文档.测试套件.源代码)支持,这些工件是表示要构建的系统不同视图的模型.存在一个由模型转换驱动的(半)自动构造过程,从系统的抽象模型开始 ...

  8. ASP.NET MVC 3 使用Model自定义验证的样式

    1.修改jquery.validate.unobtrusive.js 将onError方法修改 //修改的部分 //////////////////////////////////////////// ...

  9. 在.Net MVC中自定义ValidationAttribute标签对Model中的属性做验证

    写一个继承与ValidationAttribute类的自定义的验证方法 MVC中传递数据时,大多数都会用Model承载数据,并且在传到控制器后,对Model进行一系列的验证. 我平时经常使用的判断方法 ...

随机推荐

  1. 配置防盗链 访问控制Directory 访问控制FilesMatch

  2. 为tomcat指定JDK版本

    可以为tomcat指定JDK. 当系统中安装有多个版本的jdk时,可以为tomcat指定jdk版本. 在catalina.sh文件和setclasspath.sh文件开头的空白处加上如下一行: exp ...

  3. git push 不再需要重复输入账户密码的技巧

    添加用户环境变量 计算机—属性—高级系统设置—环境变量 变量名 HOME 变量值%USERPROFILE% 在用户文件夹C:\Users\YourName下新建一个名为_netrc的文件 machin ...

  4. Spring Boot 处理 REST API 错误的正确姿势

    摘要:如何正确的处理API的返回信息,让返回的错误信息提供更多的含义是一个非常值得做的功能.默认一般返回的都是难以理解的堆栈信息,然而这些信息也许对于API的客户端来说有可能并没有多大用途,并没有多大 ...

  5. libstdc++.so.5: undefined reference to `memcpy@GLIBC_2.14'

    没有别的原因: 找正确的 libstdc++.so.5 包就成. 我这儿有,需要的可以下载奥!

  6. jQuery form的load函数与el表达式赋值的冲突问题

    问题: 在使用el表达式给表单中的项赋初始值的时候,总是失败,物流公司没有自动选中,物流单号也没有显示值. <form id="form" method="post ...

  7. ThreadLocal用法

    使用ThreadLocal能实现线程级别的变量定义,同一个类的私有静态变量,在不同的线程中值可以不同. 1.学习文章:http://blog.csdn.net/qjyong/article/detai ...

  8. MS Chart Control 學習手記(二) - 圓餅圖

    using System.Web.UI.DataVisualization.Charting; 02 using System.Drawing; 03   04 namespace Chart.AJA ...

  9. 图表ASP:Chart

    ASP:Chart 属性  System.Web.UI.DataVisualization.Charting 命名空间包含用于图表 Web 服务器控件的方法和属性. 详细了解Chart类http:// ...

  10. 【转】使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)

    一.为什么要使程序在后台执行 我们计算的程序都是周期很长的,通常要几个小时甚至一个星期.我们用的环境是用putty远程连接到日本Linux服务器.所以使程序在后台跑有以下三个好处: 1:我们这边是否关 ...