france

https://github.com/francecil

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理


Ext.require([
    'Ext.form.*',
    'Ext.data.*'
]);

Ext.onReady(function(){
	Ext.apply(Ext.form.VTypes, {  
	     repetition: function(val, field) {     //返回true,则验证通过,否则验证失败  
	         if (field.repetition) {               //如果表单有使用repetition配置,repetition配置是一个JSON对象,该对象提供了一个名为targetCmpId的字段,该字段指定了需要进行比较的另一个组件ID。  
	             var cmp = Ext.getCmp(field.repetition.targetCmpId);   //通过targetCmpId的字段查找组件  
	             if (Ext.isEmpty(cmp)) {      //如果组件(表单)不存在,提示错误  
	                 Ext.MessageBox.show({  
	                     title: '错误',  
	                     msg: '发生异常错误,指定的组件未找到',  
	                     icon: Ext.Msg.ERROR,  
	                     buttons: Ext.Msg.OK  
	                 });  
	                 return false;  
	             }  
	             if (val == cmp.getValue()) {  //取得目标组件(表单)的值,与宿主表单的值进行比较。  
	                 return true;  
	             } else {  
	                 return false;  
	             }  
	         }  
	     },  
	     repetitionText: '两次输入的密码不一样'  
	 });
	
    Ext.define('example.contact', {
        extend: 'Ext.data.Model',
        fields: [
            'name','stuid','password','password2','tel',
            'sex','qq', 'email', 'grade_class',
            {name: 'birthday', type: 'date', dateFormat: 'm/d/Y'}
        ]
    });

    Ext.define('example.fielderror', {
        extend: 'Ext.data.Model',
        fields: ['id', 'msg']
    });

    var formPanel = Ext.create('Ext.form.Panel', {
        renderTo: 'form-ct',
        url:'admin/userRegister', //如果要实现非AJAX表单提交就在这里加url
        collapsible:true,
        
        method:'POST',
        frame: true,
        title:'注册',
        width: '30%',
//        left:1300,
        bodyPadding: 5,
        waitMsgTarget: true,

        fieldDefaults: {
            labelAlign: 'right',
            labelWidth: 85,
            msgTarget: 'side'
        },

        // configure how to read the XML data
        reader : Ext.create('Ext.data.reader.Xml', {
            model: 'example.contact',
            record : 'contact',
            successProperty: '@success'
        }),

        // configure how to read the XML errors
        errorReader: Ext.create('Ext.data.reader.Xml', {
            model: 'example.fielderror',
            record : 'field',
            successProperty: '@success'
        }),
      //实现非AJAX提交表单一定要加下面的两行!   下面的方法只适用于2.0版本
//        onSubmit: Ext.emptyFn,
//        submit: function() {
//        this.getEl().dom.action='admin/userRegister'; //连接到服务器的url地址
//        this.getEl().dom.submit();
//        },
        items: [{
            xtype: 'fieldset',
            
            title: 'Information',
            defaultType: 'textfield',
            defaults: {
                width: 280
            },
            items: [{
                    fieldLabel: '姓名',
                    allowBlank:false,
                    blankText :'请输入您的姓名',
                    emptyText: '请输入您的姓名',
                    name: 'name'
                },
                {
                    fieldLabel: '学号',
                    allowBlank:false,
                    blankText :'请输入您的学号',
                    emptyText: '请输入您的学号',
                    regex:/\d{9}$/,
                    vtype:'alphanum',
                    name: 'stuid'
                },
                
                {
                	inputType: 'password',  
                    id: 'password',  
                    name:'password',
                    maxLength: 15,  
                    fieldLabel: '输入密码',  
                    vtype:'alphanum',
                    allowBlank: false  
                },
                {
                	inputType: 'password',  
                    id: 'password2',  
                    name:'password2',
                    maxLength: 15,  
                    fieldLabel: '重复密码',  
                    allowBlank: false,  
                    vtype: 'repetition',  //指定repetition验证类型  
                    repetition: { targetCmpId: 'password' }  //配置repetition验证,提供目标组件(表单)ID  
                },
                {
                    fieldLabel: '电话',
//                    minLength:11,
//                    maxLength:11,
                    allowBlank:false,
                    blankText :'请输入合法的电话号码',
                    emptyText: '请输入您的电话',
                    regex:/\d{11}$/,
                    vtype:'alphanum',
                    name: 'tel'
                }, 
                {	xtype: 'combobox',
                    fieldLabel: '性别',
                    allowBlank:false,
                    blankText :'你没有性别??!',
                    
                    name: 'sex',
                    store: Ext.create('Ext.data.ArrayStore', {
                        fields: ['usex', 'sex'],
//                        data : Ext.example.states // from states.js
                        data:[['01','男'],['02','女'],['03','为什么会有这个选项...']
                              ]  
                    }),
                    valueField: 'usex',
                    displayField: 'sex',
                    typeAhead: true,
                    queryMode: 'local'
                    
                },
                {
                    fieldLabel: 'qq',
                    allowBlank:false,
                    minLength:5,
                    maxLength:10,
                    blankText :'请输入合法的QQ号码',
                    emptyText: '请输入您的QQ',
                    vtype:'alphanum',
                    name: 'qq'
                }, 
                {
                    fieldLabel: 'Email',
                    blankText :'请输入您的邮箱',
                    allowBlank:false,
                    name: 'email',
                    vtype:'email'
                }, {
                    xtype: 'combobox',
                    fieldLabel: '专业班级',
                    allowBlank:false,
                    name: 'grade_class',
                    store: Ext.create('Ext.data.ArrayStore', {
                        fields: ['abbr', 'state'],
//                        data : Ext.example.states // from states.js
                        data:[['01','13计算机1班'],['02','12计算机2班'],['03','12计算机3班'],
                              ['04','12计算机4班'],['05','12计算机5班'],['06','12计算机6班'],
                              ['07','其他']]  
                    }),
                    valueField: 'abbr',
                    displayField: 'state',
                    typeAhead: true,
                    queryMode: 'local',
                    emptyText: '例如:13计算机1班'
                }, {
                    xtype: 'datefield',
                    fieldLabel: 'Date of Birth',
                    name: 'birthday',
                    allowBlank: false,
                    maxValue: new Date()
                }
            ]
        }],

        buttons: [{
            text: '样例',
            handler: function(){
                formPanel.getForm().load({
                    url: 'xml-form-data.xml',
                    waitMsg: 'Loading...'
                });
            }
        }, 
//        {
//            text: '提交',
//            disabled: true,
//            formBind: true,
//            handler: function(){
//                this.up('form').getForm().submit({
////                    url: 'xml-form-errors.xml',
//                	url:'admin/userRegister',
//                    submitEmptyText: false,
//                    waitTitle:"请稍候",
//                    waitMsg:"正在提交表单数据,请稍候"
//                })
//            }
//        },
        {  
            text : '注册',  
            type : 'submit',  
            id:'register',
             formBind:true,//只有表单全部校验通过 按钮才可用
             disabled:true,//默认不可用
            handler : function() {  
            	
            	formPanel.getForm().submit({
////                    url: 'xml-form-errors.xml',
                	url:'admin/userRegister',
                    submitEmptyText: false,
                    waitTitle:"请稍候",
                    waitMsg:"正在提交表单数据,请稍候"
                });
            	}  
        },
        {
            text: '重置',
            handler: function(){
            	formPanel.getForm().reset();
            }
        }
        ]
    });

});


版权声明:本文为博主原创文章,未经博主允许不得转载。

posted on 2014-09-11 18:22  france  阅读(313)  评论(0编辑  收藏  举报