Foro

Validacion url&email

0
Hola que tal a todos! tengo un pequeño problema al tratar de validar la informacion(url,email) contenida en una caja de texto, dependiente de un combo de seleccion este es mi codigo:
var array =[['1','MAIL'],['2','URL']];
       var store = new Ext.data.ArrayStore({
           fields: [      
               {name: 'clave'},
               {name: 'descr'}
           ]
       });
       store.loadData(array);
       var combo = new Ext.form.ComboBox({
            store:store,
            fieldLabel :'Validacion',
            displayField:'state',
            typeAhead: true,
            mode: 'local',
            width:200,
            forceSelection: true,
            readOnly :true,
            triggerAction: 'all',
            emptyText:'Select Valid...',
            valueField: 'clave',
            displayField: 'descr',
            selectOnFocus:true
       });
       
       var txt = new Ext.form.TextField({
          id:'txt',
          width:200,
          fieldLabel :'Valor',          
          allowBlank:false,
          maxLength:100
       });  
       
       var win = new Ext.Window({
           title:'Hola ExtJS',
           width:350,
           height:300,
           layout:'form',           
           minimizable:true,
           maximizable:true,
           items:[combo,txt]
       });
       
       combo.on('select',function(combo,record,index ){
           if(record.get('clave') == '1'){   
               txt.vtype='email';                                       
           }
           else{                         
               txt.vtype='url';    
           }
       },this);       
       win.show();
El problema es que no puedo cambiar la propiedad vtype al seleccionar un item del combo, espero alguien pueda ayudarme. saludos..
0
Hola Lestat, he probado tu code y si cambia la propiedad vtype, seguro te refieres a que si por ejemplo tienes un texto en la caja: "hola" y seleccionas el valor URL del combo, debería marcarte como error. Si es así deberías añadirle:
  txt.validate(); 
despues de cada cambio de vtype. esto es para que vuelva a validar y actualice el mensaje de error. saludos.
0
Hola Gracias mayerhorna por la solucion!! asi quedo mi codigo:
Ext.namespace('CursoExtJS');
  CursoExtJS.CrearVentana = {   
    init: function(){ 
       var array =[['1','MAIL'],['2','URL']];
       var store = new Ext.data.ArrayStore({
           fields: [      
               {name: 'clave'},
               {name: 'descr'}
           ]
       });
       store.loadData(array);
       var combo = new Ext.form.ComboBox({
            store:store,
            fieldLabel :'Validacion',
            displayField:'state',
            typeAhead: true,
            mode: 'local',
            width:200,
            forceSelection: true,
            readOnly :true,
            triggerAction: 'all',
            emptyText:'Select Valid...',
            valueField: 'clave',
            displayField: 'descr',
            selectOnFocus:true
       });
       
       var txt = new Ext.form.TextField({
          id:'txt',
          width:200,
          fieldLabel :'Valor',          
          allowBlank:false,
          maxLength:100
       });  
       
       var win = new Ext.Window({
           title:'Hola ExtJS',
           width:350,
           height:300,
           layout:'form',           
           minimizable:true,
           maximizable:true,
           items:[combo,txt]
       });
       
       combo.on('select',function(combo,record,index ){
           if(record.get('clave') == '1'){
               txt.vtype='email'; 
               txt.validate();
                       
           }
           else{                        
               txt.vtype='url'; 
               txt.validate(); 
           }
       },this);       
       win.show();                
    }   
  }   
  //Cuando el DOM esté listo se invoca la función “init”   
  Ext.onReady(CursoExtJS.CrearVentana.init,CursoExtJS.CrearVentana);  
dependiendo del combo seleccionado realiza la validacion <!-- s:D --><!-- s:D -->

¿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.