sencha touch Model validations(模型验证,自定义验证)
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(模型验证,自定义验证)的更多相关文章
- sencha touch Model validations 自定义验证 二选一输入验证、重复验证、时间验证、比较验证、条件验证(2015-1-14)
项目初始化时执行以下代码 //重写模型,方便进行自定义验证 Ext.define("Ext.zh.data.Model", { override: "Ext.data.M ...
- ASP.NET MVC验证 - 自定义验证规则、验证2个属性值不等【待验证】
提示:保存后才提示错误信息 自定义验证特性,继承ValidationAttribute并实现IClientValidatable 这次重写了基类的IsValid()方法的另外一个重载,因为该重载包含了 ...
- 重写ValidateEntity虚方法实现可控的上下文验证和自定义验证
上篇文章介绍了ValidationAttribute和IValidatableObject.Validate验证,但是这种验证还是稍微简单了,对于复杂的实体,例如:继承过来的实体.实现某接口的实体等等 ...
- Angular:Reactive Form的使用方法和自定义验证器
本文将介绍Angular(Angular2+)中Reactive Form的有关内容,包括: Reactive Form创建方法 如何使用验证 自定义验证器 下面开始进入正文! Reactive Fo ...
- html5外包—长年承接html5外包业务:《Sencha Touch权威指南》下载
<Sencha Touch权威指南>内容简介:如何才能全面而透彻地理解和掌握移动应用开发框架Sencha Touch并开发出令人心动的移动应用?<Sencha Touch权威指南&g ...
- Model Validation(模型验证)
Model Validation(模型验证) 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/344 ...
- Verification of Model Transformations A Survey of the State-of-the-Art 模型转换的验证 对现状的调查
模型驱动工程范式认为软件开发生命周期由工件(需求规范.分析和设计文档.测试套件.源代码)支持,这些工件是表示要构建的系统不同视图的模型.存在一个由模型转换驱动的(半)自动构造过程,从系统的抽象模型开始 ...
- ASP.NET MVC 3 使用Model自定义验证的样式
1.修改jquery.validate.unobtrusive.js 将onError方法修改 //修改的部分 //////////////////////////////////////////// ...
- 在.Net MVC中自定义ValidationAttribute标签对Model中的属性做验证
写一个继承与ValidationAttribute类的自定义的验证方法 MVC中传递数据时,大多数都会用Model承载数据,并且在传到控制器后,对Model进行一系列的验证. 我平时经常使用的判断方法 ...
随机推荐
- C# 实现数字字符串左补齐0的两种方法
); MessageBox.Show(sss); return; 代码如上,自动补齐前面的0
- C# Image与Base64编码互转函数
public Bitmap GetImageFromBase64(string base64string) { byte[] b = Convert.FromBase64String(base64st ...
- HTML5/CSS3实现五彩进度条应用
今天要介绍的是一款基于HTML5和CSS3的进度条应用,这款进度条是静态的,仅提供进度条的五彩外观.当然你可以在CSS中动态设置进度值来让其变得动态,一个很好的实现方式是利用jQuery动态改变CSS ...
- u3d一个GameObject绑定两个AudioSource
u3d 一个GameObject绑定两个AudioSource ,使他们分别播放,并控制 using UnityEngine; using System.Collections; public cl ...
- iOS: 控制UIView的外形
#import <UIKit/UIKit.h> #import <QuartzCore/QuartzCore.h> @interface UIView (Shape) - (v ...
- 关于xml里的encoding
创建一个xml时 如果<?xml version="1.0" encoding="GB2312" ?>更改encoding的值为UTF-8,保存后 ...
- IE中自定义标签使用自封闭格式引发错误!
最近学习IONIC,其中用到了ion-menu-nav-button,由于标签开始和结尾之间没有内容,所以图省事儿使用自封闭标签的写法: <ion-menu-nav-button class=& ...
- Thinkphp5笔记六:公共模块common的使用
common模块属于公共模块,Thinkphp框架,默认就能调用. 实际用处:任何模块都可能用到的模型.控制.事件提取出来放到公共模块下. 一.公共事件 apps\common\common.php ...
- js数组push方法使用注意
js 数组的push方法,想必大家都知道是向数组末尾添加元素,但是有一个很关键的点需注意: 引自MDN 返回值 当调用该方法时,新的 length 属性值将被返回. var sports = [&qu ...
- 在Lua中计算含中文的字符串的长度
--[[ @desc: 计算字符串字符个数 author:{author} time:-- :: --@inputstr: 源字符串 return 字符个数 ]] function getString ...