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. C# 实现数字字符串左补齐0的两种方法

    ); MessageBox.Show(sss); return; 代码如上,自动补齐前面的0

  2. C# Image与Base64编码互转函数

    public Bitmap GetImageFromBase64(string base64string) { byte[] b = Convert.FromBase64String(base64st ...

  3. HTML5/CSS3实现五彩进度条应用

    今天要介绍的是一款基于HTML5和CSS3的进度条应用,这款进度条是静态的,仅提供进度条的五彩外观.当然你可以在CSS中动态设置进度值来让其变得动态,一个很好的实现方式是利用jQuery动态改变CSS ...

  4. u3d一个GameObject绑定两个AudioSource

    u3d 一个GameObject绑定两个AudioSource  ,使他们分别播放,并控制 using UnityEngine; using System.Collections; public cl ...

  5. iOS: 控制UIView的外形

    #import <UIKit/UIKit.h> #import <QuartzCore/QuartzCore.h> @interface UIView (Shape) - (v ...

  6. 关于xml里的encoding

    创建一个xml时 如果<?xml version="1.0"  encoding="GB2312" ?>更改encoding的值为UTF-8,保存后 ...

  7. IE中自定义标签使用自封闭格式引发错误!

    最近学习IONIC,其中用到了ion-menu-nav-button,由于标签开始和结尾之间没有内容,所以图省事儿使用自封闭标签的写法: <ion-menu-nav-button class=& ...

  8. Thinkphp5笔记六:公共模块common的使用

    common模块属于公共模块,Thinkphp框架,默认就能调用. 实际用处:任何模块都可能用到的模型.控制.事件提取出来放到公共模块下. 一.公共事件  apps\common\common.php ...

  9. js数组push方法使用注意

    js 数组的push方法,想必大家都知道是向数组末尾添加元素,但是有一个很关键的点需注意: 引自MDN 返回值 当调用该方法时,新的 length 属性值将被返回. var sports = [&qu ...

  10. 在Lua中计算含中文的字符串的长度

    --[[ @desc: 计算字符串字符个数 author:{author} time:-- :: --@inputstr: 源字符串 return 字符个数 ]] function getString ...