Mega Code Archive

 
Categories / JavaScript DHTML / Ext JS
 

Advanced Validation Examples Using VTypes

<!-- /*!  * Ext JS Library 3.0.0  * Copyright(c) 2006-2009 Ext JS, LLC  * licensing@extjs.com  * http://www.extjs.com/license  */ --> <html> <head> <title>Hello World Window</title> <link rel="stylesheet" type="text/css" href="ext-3.0.0/resources/css/ext-all.css" /> <script type="text/javascript" src="ext-3.0.0/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="ext-3.0.0/ext-all.js"></script> </head> <!-- Revised from demo code from ext3.0.0 --> <body> <script type="text/javascript"> /*!  * Ext JS Library 3.0.0  * Copyright(c) 2006-2009 Ext JS, LLC  * licensing@extjs.com  * http://www.extjs.com/license  */ // Add the additional 'advanced' VTypes Ext.apply(Ext.form.VTypes, {     daterange : function(val, field) {         var date = field.parseDate(val);         if(!date){             return;         }         if (field.startDateField && (!this.dateRangeMax || (date.getTime() != this.dateRangeMax.getTime()))) {             var start = Ext.getCmp(field.startDateField);             start.setMaxValue(date);             start.validate();             this.dateRangeMax = date;         }          else if (field.endDateField && (!this.dateRangeMin || (date.getTime() != this.dateRangeMin.getTime()))) {             var end = Ext.getCmp(field.endDateField);             end.setMinValue(date);             end.validate();             this.dateRangeMin = date;         }         /*          * Always return true since we're only using this vtype to set the          * min/max allowed values (these are tested for after the vtype test)          */         return true;     },     password : function(val, field) {         if (field.initialPassField) {             var pwd = Ext.getCmp(field.initialPassField);             return (val == pwd.getValue());         }         return true;     },     passwordText : 'Passwords do not match' }); Ext.onReady(function(){     Ext.QuickTips.init();     // turn on validation errors beside the field globally     Ext.form.Field.prototype.msgTarget = 'side';     var bd = Ext.getBody();     /*      *  Date Range        */          var dr = new Ext.FormPanel({       labelWidth: 125,       frame: true,       title: 'Date Range',     bodyStyle:'padding:5px 5px 0',     width: 350,       defaults: {width: 175},       defaultType: 'datefield',       items: [{         fieldLabel: 'Start Date',         name: 'startdt',         id: 'startdt',         vtype: 'daterange',         endDateField: 'enddt' // id of the end date field       },{         fieldLabel: 'End Date',         name: 'enddt',         id: 'enddt',         vtype: 'daterange',         startDateField: 'startdt' // id of the start date field       }]     });     dr.render('dr');   }); </script>  <div id="dr"> </body> </html>