表单验证(使用Vtype)

表单验证(使用Vtype)_第1张图片

<div id="vtypeForm" class="w_320">
    <h2>表单验证中使用VType验证示例</h2>
</div>
<div id="myVtypeForm" class="w_320">
    <h2>自定义VType单字段验证示例</h2>
</div>
<div id="mysVtypeForm" class="w_320">
    <h2>自定义VType多字段验证示例</h2>
</div>
Ext.onReady(function(){
    //Ext表单验证
    
    //一、验证类型
    //1.空值验证  allowBlank
    //2.输入类型以及输入格式验证(数字、邮箱、日期、时间)
    //2.0.1  使用特定类型的表单组件Ext.form.Number,Ext.form.Date,Ext.form.Time
    //2.0.2 使用regex(正则表达式)
    //2.0.3 使用VType对输入内容进行验证
    //3.多字段间数据验证(关联字段数据的校验)
    
    Ext.QuickTips.init();//初始化提示
    
    //4.示例:表单验证(使用Vtype)
    Ext.create('Ext.form.Panel',{
        title : 'vtype示例',
        width : 300,
        renderTo : 'vtypeForm',
        frame :true,
        bodyPadding : 5,
        defaultType : 'textfield',//统一设置默认类型
        fieldDefaults : {//统一设置默认属性
            width : 270,
            labelWidth : 80,
            labelSeparator : ': ',
            //allowBlank : false,
            msgTarget : 'side'
        },
        items : [{
            name : 'email',
            fieldLabel : '电子邮箱',
            vtype : 'email'
        },{
            name : 'myUrl',
            fieldLabel : '网址',
            vtype : 'url'
        },{
            name : 'englishiCase',
            fieldLabel : '字母',
            vtype : 'alpha'
        },{
            name : 'caseAndNumber',
            fieldLabel : '字母和数字',
            vtype : 'alphanum'
        }]
    });
    
    //5.示例:表单验证(使用自定义Vtype)
    //单子段自定义验证与多字段自定义验证
    //5.1.1单字段验证扩展(自定义电话号码的VType验证)
    Ext.apply(Ext.form.field.VTypes,{
        phone : function(v){
            //电话号码规则
            var reg = /^(\d{3}-|\d{4}-)?(\d{8}|\d{7})$/;
            return reg.test(v);
        },
        phoneText : '请输入有效的电话号码',
        phoneMask : /[\d-]/i //只允许输入数字和-号
    });    
    
    Ext.create('Ext.form.Panel',{
        title : '自定义VType验证',
        width : 300,
        renderTo : 'myVtypeForm',
        frame : true,
        bodyPadding : 5,
        defaultType : 'textfield',
        fieldDefaults : {
            width : 270,
            labelWidth : 80,
            labelSeparator : ": ",
            msgTarget : 'side'
        },
        items : [{
            name : 'phoneOne',
            fieldLabel : '住宅号码',
            vtype : 'phone'//使用自定义的vtype
        },{
            name : 'phoneTwo',
            fieldLabel : '办公号码',
            vtype : 'phone'
        }]
    });
    
    //5.1.2多字段验证扩展(开始日期与结束日期)
    //自定义验证日期选择范围
    Ext.apply(Ext.form.field.VTypes,{
        dateRange : function(val,field){
            var beginDate = null,//开始日期
                beginDateCmp = null,//开始日期组件
                endDate = null,//结束日期
                endDateCmp = null,//结束日期组件
                validStatus = true;//验证状态
            if(field.dateRange){
                
                //获取开始时间
                if(!Ext.isEmpty(field.dateRange.begin)){
                    beginDateCmp = Ext.getCmp(field.dateRange.begin);
                    beginDate = beginDateCmp.getValue();
                    
                }
                //获取结束时间
                if(!Ext.isEmpty(field.dateRange.end)){
                    endDateCmp = Ext.getCmp(field.dateRange.end);
                    endDate = endDateCmp.getValue();
                }
            }
            
            //console.info(beginDate);
            //console.info(endDate);
            
            //如果开始日期或者结束日期有一个为空则校验通过
            if(!Ext.isEmpty(beginDate) && !Ext.isEmpty(endDate)){
                validStatus = beginDate <= endDate;
            }
            
            return validStatus;
        },
        dateRangeText : '开始日期不能大于结束日期,请重新选择。'
    });
    
    //Ext.QuickTips.init();//初始化提示信息
    //创建表单
    var dateForm = Ext.create('Ext.form.Panel',{
        title : '自定义日期范围验证示例',
        width : 260,
        renderTo : 'mysVtypeForm',
        frame : true,
        bodyPadding : 5,
        defaultType : 'datefield',//默认类型
        fieldDefaults : {
            width : 220,
            labelWidth : 90,
            labelSeparator : ': ',
            formate : 'Y年n月j日',
            autoFitErrors : false,//不自动调整字段宽度
            editable : false,//只读
            allwoBlank : false,//不允许为空
            msgTarget : 'side'
        },
        items : [{
            id : 'beginDate1',
            fieldLabel : '入学开始日期',
            vtype : 'dateRange',
            dateRange : {begin: 'beginDate1',end : 'endDate1'}
        },{
            id : 'endDate1',
            fieldLabel : '入学结束日期',
            vtype : 'dateRange',
            dateRange : {begin: 'beginDate1',end : 'endDate1'}
        },{
            id : 'beginDate2',
            fieldLabel : '毕业开始日期',
            vtype : 'dateRange',
            dateRange : {begin: 'beginDate2',end : 'endDate2'}
        },{
            id : 'endDate2',
            fieldLabel : '毕业开始日期',
            vtype : 'dateRange',
            dateRange : {begin: 'beginDate2',end : 'endDate2'}
        }]
        
    });
    
});



你可能感兴趣的:(Vtype表单验证)