0
点赞
收藏
分享

微信扫一扫

sencha touch Model validations(模型验证,自定义验证)

model

1 Ext.define('app.model.Register', {
2 extend: 'Ext.data.Model',
3 requires: ['Ext.data.JsonP'],
4 config: {
5 fields: [{
6 name: 'mobile',
7 type: 'int'
8 },
9 {
10 name: 'verifycode',
11 type: 'int'
12 },
13 {
14 name: 'email',
15 type: 'string'
16 },
17 {
18 name: 'password',
19 type: 'string'
20 },
21 {
22 name: 'passwordTwo',
23 type: 'string'
24 },
25 {
26 name: 'realname',
27 type: 'string'
28 },
29 {
30 name: 'cityid',
31 type: 'int'
32 },
33 {
34 name: 'address',
35 type: 'string'
36 },
37 {
38 name: 'sex',
39 type: 'int'
40 },
41 {
42 name: 'tService',
43 type: 'string'
44 }],
45 validations: [{
46 field: 'realname',
47 type: 'presence',
48 message: '请输入姓名!'
49 },
50 {
51 field: 'password',
52 type: 'presence',
53 message: '请输入密码!'
54 },
55 {
56 field: 'email',
57 type: 'email',
58 message: '请输入正确的邮箱地址!'
59 },
60 {
61 field: 'verifycode',
62 type: 'presence',
63 message: '请输入验证码!'
64 },
65 {
66 field: 'mobile',
67 type: 'format',
68 matcher: /^(1(([35][0-9])|(47)|[8][0126789]))\d{8}$/,
69 message: '请输入11位手机号码!'
70 }]
71 },
72 //添加自定义验证
73 validate: function (options) {
74 var me = this,
75 errors = me.callParent(arguments),
76 tService = this.get('tService'),
77 password = this.get('password'),
78 passwordConfirm = this.get('passwordTwo');
79 if (password != passwordConfirm) {
80 errors.add({
81 field: 'passwordConfirm',
82 message: '两次密码输入不一致!'
83 })
84 }
85 if (tService == 'O') {
86 if (this.get('address') == '') {
87 errors.add({
88 field: 'address',
89 message: '请输入地址!'
90 })
91 }
92 }
93 return errors;
94 }
95 });

视图:

1 Ext.define("app.view.user.Register", {
2 alternateClassName: 'userRegister',
3 extend: 'Ext.form.Panel',
4 xtype: 'userRegister',
5 requires: ['Ext.form.FieldSet', 'Ext.field.Password', 'Ext.field.Email', 'Ext.field.Select', 'Ext.field.Radio', 'Ext.field.Hidden'],
6 config: {
7 padding: 10,
8 title: '注册',
9 cls: 'fromPanel',
10 items: [{
11 xtype: 'hiddenfield',
12 itemId: 'tService',
13 name: 'tService'
14 },
15 {
16 xtype: 'fieldset',
17 iconCls: 'home',
18 defaults: {
19 labelWidth: '40%'
20 },
21 items: [{
22 xtype: 'textfield',
23 name: 'mobile',
24 placeHolder: '手机号码(点图标取验证码)',
25 cls: 'user ico x-field-clearable'
26 },
27 {
28 xtype: 'textfield',
29 name: 'verifycode',
30 placeHolder: '验证码'
31 }]
32 },
33 {
34 xtype: 'fieldset',
35 iconCls: 'home',
36 defaults: {
37 labelWidth: '40%'
38 },
39 items: [{
40 xtype: 'emailfield',
41 name: 'email',
42 placeHolder: '电子邮件'
43 },
44 {
45 xtype: 'passwordfield',
46 name: 'password',
47 placeHolder: '密码'
48 },
49 {
50 xtype: 'passwordfield',
51 name: 'passwordTwo',
52 placeHolder: '再次输入密码'
53 },
54 {
55 xtype: 'textfield',
56 name: 'realname',
57 placeHolder: '姓名'
58 },
59 {
60 xtype: 'selectfield',
61 name: 'cityid',
62 itemId: 'cityid',
63 valueField: 'areaCode',
64 displayField: 'cityname'
65 },
66 {
67 itemId: 'address',
68 xtype: 'textfield',
69 name: 'address',
70 placeHolder: '详细地址'
71 },
72 {
73 layout: 'hbox',
74 items: [{
75 xtype: 'radiofield',
76 name: 'sex',
77 value: '1',
78 label: '男',
79 checked: true,
80 flex: 1
81 },
82 {
83 xtype: 'radiofield',
84 name: 'sex',
85 value: '0',
86 label: '女',
87 flex: 1
88 }]
89 }]
90 },
91 {
92 xtype: 'button',
93 action: 'register',
94 text: '提交注册',
95 ui: 'action'
96 }]
97 }
98 });

验证代码:

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

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

1 /*公共类*/
2 Ext.define('myUtil', {
3 statics: {
4 /*为Ext.Viewport添加一个消息提示组件*/
5 addMessage: function () {
6 Ext.Viewport.setMasked({
7 xtype: 'loadmask',
8 cls: 'message',
9 transparent: true,
10 indicator: false
11 });
12 this.hideMessage();
13 },
14 /*显示一个消息提示*/
15 showMessage: function (mes, autoHide) {
16 var me = this, message = this.getMessage();
17 message.setMessage(mes);
18 message.show();
19 //是否自动关闭提示
20 if (autoHide) {
21 setTimeout(function () {
22 message.hide();
23 },
24 500);
25 }
26 },
27 /*隐藏消息提示*/
28 hideMessage: function () {
29 this.getMessage().hide();
30 },
31 //消息组件
32 getMessage: function () {
33 return Ext.Viewport.getMasked();
34 },
35 //验证模型
36 valid: function (model, from) {
37 var tmpModel = Ext.create(model),
38 me = this,
39 errors, valid;
40 from.updateRecord(tmpModel);
41 errors = tmpModel.validate();
42 valid = errors.isValid();
43 if (!valid) {
44 errors.each(function (err) {
45 me.showMessage(err.getMessage(), true);
46 return;
47 });
48 }
49 return valid;
50 }
51 }
52 });






举报

相关推荐

0 条评论