Foro

[Solucionado] Validar al quitar el foco

0
Hola, mi pregunta es, ¿como hacer que valide si es un email cuando el foco del campo se quite?. Tengo un campo de tipo email, y resulta que al insertar muchos caracteres rapidamente, el navegador se cuelga, creo que se debe que al validar coge los valores constantemente, entonces el script no le da tiempo de validar y se cuelga el navegador. Por eso pregunto si se puede hacer que valide cuando se deje de escribir en ese campo, que se quite el foco de ese campo email. Aqui dejo el código:
Ext.onReady(function(){
    Ext.QuickTips.init();
    // turn on validation errors beside the field globally
    Ext.form.Field.prototype.msgTarget = 'side';
     
     var email = new Ext.form.TextField({
	    maxLength: 64,
	    autoCreate: {tag: "input", type: "text", autocomplete: "off", maxlength: 64 },
	    name: 'v_email',
	    fieldLabel: 'Email',
	    vtype: 'email',
	    allowBlank: false
    });
    
    var nombre = new Ext.form.TextField({
	    maxLength: 30,
	    autoCreate: {tag: "input", type: "text", autocomplete: "off", maxlength: 30 },
	    name: 'nombre',
	    fieldLabel: 'Nombre',
	    allowblank: false
    });
    
    var tabs = new Ext.FormPanel({
        labelWidth: 75,
        border:true,
        width: 500,
	frame: true,
        items:[ email, nombre ],
        buttons: [{
            text: 'Save'
        },{
            text: 'Cancel'
        }]
    });
    
    tabs.render('tabs');
});
0
Ya lo solucione, al final hice un propio validador, y con el atributo onBlur consegui validar los email cuando el foco del campo se quita.
0
si es posible publica la respuesta en el hilo para que el que no sepa como hacerlo vea como lo solucionaste y así das tu aporte
0
Esta es la solución:
Ext.apply(Ext.form.VTypes, {
	
    validarEmail: function(val, field){
	    //if (field.initialPassField) {
		    return valEmail(val);
	    //}
    },
    validarEmailText: 'Este campo debe ser una dirección de correo electrónico con el formato "usuario@dominio.com"'
});
function valEmail(e){
	if (/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/.test(e)){ 
			return true;
	}
	else{
			return false;
	}
}
Ext.onReady(function(){
    Ext.QuickTips.init();
    // turn on validation errors beside the field globally
    Ext.form.Field.prototype.msgTarget = 'side';
     
     var email = new Ext.form.TextField({
	    anchor: '%90',
	    id: 'idEmail',
	    maxLength: 64,
	    autoCreate: {tag: "input", type: "text", autocomplete: "off", maxlength: 64 },
	    name: 'v_email',
	    validationEvent:false,
	    validateOnBlur:true,
	    vtype: 'validarEmail',
	    fieldLabel: 'Email',
	    allowBlank: false,
	    blankText: "El campo email es requerido",
	    onBlur: function(){
		    tabs.getForm().isValid();
    	    }
    });
    var nombre = new Ext.form.TextField({
	    maxLength: 30,
	    autoCreate: {tag: "input", type: "text", autocomplete: "off", maxlength: 30 },
	    name: 'nombre',
	    fieldLabel: 'Nombre',
	    allowblank: false
    });
    
    var tabs = new Ext.FormPanel({
        labelWidth: 75,
        border:true,
        width: 500,
	frame: true,
        items:[ email, nombre ],
        buttons: [{
            text: 'Save',
	    handler: function(){
			if(tabs.getForm().isValid()){
				    alert('todo correcto');
			}
           }
        },{
            text: 'Cancel'
        }]
    });
    
    tabs.render('tabs');
});

¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook

Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.