After the post Sencha/ExtJs: Validation fields on the fly with VType, I would write some words concerning the form’s validation on client side with the Sencha/ExtJs framework.

A concret example, with a form containing several fields and in our case a date field and a time field.
First, we will create a VType in order to valid the time field;

<!-- Vtype or validator for the Time field in deadline -->
Ext.apply(Ext.form.field.VTypes, 
{
    TimeVType:  function(v) {
    	return /^([0-1]?[0-9]|2[0-3]):([0-5][0-9])$/.test(v);
    },
    TimeVTypeText: 'The time must have the format HH:MM',
    TimeVTypeMask: /[\d\:]/i
}
);

…and the form code would be:

id: 'myWindowFormID',
xtype: "form",
bodyPadding: 2,
defaultType: "textfield",
frame:true,
items:
	[
		<!-- New Line -->
		{
			new Ext.form.DateField({											fieldLabel: 'Deadline',
				name: 'deadlineDate',
				id: 'deadlineDate',
				format:'d/m/Y',
				allowBlank:false,
				value : new Date(),
				width: 200
			}),
			{
				fieldLabel: '',
				disabled: false,
				editable: true, 
				allowBlank:false,
				hideTrigger:true,
				xtype: 'textfield',
				vtype: 'TimeVType',
				name:"deadlineTime",
				id: 'deadlineTime',
				value: '09:00',
				height: 25,
				width: 50
			}
		}
	],
	buttons: [
	{
	   text: 'OK',
	   handler: function() {

		// Show a waiting message box
		Ext.MessageBox.show({
			msg: 'Sending and processing the data...',
			title: 'Please wait',
			progressText: 'Sending and processing the data...',
			progress: true,
			closable: false,
	   		width:300,
	   		wait:true,
	   		waitConfig: {interval:200}
		});

		// Get the form fom the current OK button
		<!-- var form = Ext.getCmp('myWindowFormID').getForm(); -->
		var form = btn.up('form').getForm();
		form.submit({
			url: 'myController.do?action=doMyBusiness',
		    	method: 'POST',
		    	waitTitle: 'Please wait',
			waitMsg: 'Sending and processing the data...',

			success: function(form, action) {
				// Hide the waiting message box
				Ext.MessageBox.hide();
									
				//var result = Ext.JSON.decode(response.responseText);
				var result = action.result;

				if (result.success && result.success === 'true') {
					var prepareFileName = result.data;
					Ext.MessageBox.alert('alert','done!!!');
				} else {
					if(result.errorMessage === ''){
						Ext.MessageBox.alert('alert','error on server!');
					}else{
						Ext.MessageBox.alert('alert',result.errorMessage;
					}
				}
			}							
			,failure: function(form, action) {
				// Hide the waiting message box
				Ext.MessageBox.hide();

				Ext.MessageBox.alert('alert', 'the form is invalid!!!');
			}

		}); // end-of-submit
	   }
	}

….so if we fill a wrong values in the deadline and time fields like:

… and submit the form by clicking on a ‘OK’ button, we will obtain the following message specified in the above code:

… an other way, it is check the form fields on the fly by call the method form.isValid() like:

var form = Ext.getCmp('myWindowFormID').getForm();
if(form.isValid()==false){
	Ext.MessageBox.alert('alert', 'the form is invalid!!!');
}else{
	form.submit({
		....
	});
}

This practise works, but in reality it’s not the best practise, so, I advise you to read the official Ext.form.action.Submit documentation.

That’s all!!!!

Best regards,

Huseyin OZVEREN