Foro

focus en un textfield

0
Como puedo poner el focus en un textfield
Elapas.Login=function()
{
	var login_form, win, userField, pwField;
	
	function disableFields(which)
	{
		if(which==true)
		{
			userField.setDisabled(true);
			pwField.setDisabled(true);
		}
		else
		{
			userField.setDisabled(false);
			pwField.setDisabled(false);
		}
	}
	
	function checkLogin()
	{
		win.setDisabled(true);
		
		login_form.getForm().submit({
			success: function(form, response) {
				self.location.href = "index.php?lang=Espanol"
			},
			failure: function(form, response){
				Ext.Msg.show({title: "Error", msg: "Datos incorrectos, Por favor verifique", buttons: Ext.Msg.OK, icon: Ext.Msg.ERROR });
				win.setDisabled(false);
			}
	    });
		
	}
	
	
	userField = new Ext.form.TextField({
		
		fieldLabel: "Usuario",
		name: "username",
		style: "margin:0px 0px 0px 0px;",
		labelStyle: "margin: 0px 0px 0px 0px;"
		
	});
	
	pwField = new Ext.form.TextField({
		fieldLabel: "Contraseña",
		name: "password",
		inputType: "password",
		style: "margin:0px 0px 0px 0px;",
		labelStyle: "margin: 0px 0px 0px 0px;"
	});
	
	
	login_form = new Ext.FormPanel({
		frame: true,
		url: "./php/Login.php",
		buttonAlign: "right",
		items: [
		userField,
		pwField
		//langCombo
		],
		keys:({
              key: Ext.EventObject.ENTER  ,
              fn: checkLogin,
              scope: this
        })
		
	});
	
	
	 win = new Ext.Window({
		renderTo: "login",
		title: "Ventana de Ingreso",
		layout:"fit",
		draggable:false,
		closable:false,
		resizable:false,
		width: 280,
		height: 130,
		items: [login_form],
		buttons: [
		{
			xtype: "tbbutton",
			text: "Ingresar",
			minWidth:80,
			minHeight:50,
			handler: function()
			{
			checkLogin();
			},
			icon: "./images/ok.png",
			cls: "x-btn-text-icon"
		},
            {
			xtype: "tbbutton",
			text: "Cerrar",
			minWidth:80,
			minHeight:50,
			handler: function()
			{
				win.close();
                Ext.MessageBox.alert("Salio del Sistema", "Gracias por visitar el Sistema de Tramites de Elapas");
			},
			icon: "./images/close16.png",
			cls: "x-btn-text-icon"
		}]
	});
	win.show();
};
Quisiera que el focus este en el textfield username gracias a todos
0
[color=#0000BF]Hola, soy nuevo xD! no se si será la mejor opción pero te doy mi solución: Lo que está en rojo es lo que pondría.
userField = new Ext.form.TextField({
      
      fieldLabel: "Usuario",
      name: "username",
      id: "u",
      style: "margin:0px 0px 0px 0px;",
      labelStyle: "margin: 0px 0px 0px 0px;"   
   });
Ext.get('u').focus();
Saludos cordiales, William Campos[/color]
0
prueba con el método "focus" que te comenta akagami
userField.focus(); //así te debería funcionar
Lo que no estoy seguro es si forzosamente tienes que asignarle el focus despues de renderearlo si se puede hacer antes, sería cosa de que probaras y luego nos cuentas. saludos
0
lo probe antes de crear el formulario, lo probe despues de crear el formulario, antes de crear la ventana, despues de crear la ventana, despues de crear el textfield u aun no puedo hacerlo funcionar
0
Problema resuelto para empezar el texfield al que queremos poner el focus obligadamente tiene que tener un id luego se pone: Ext.getCmp('id').focus(true); y si asi no sale es que todo carga muy rapido hay que darle algo de tiempo setTimeout(function(){Ext.getCmp('id').focus(true); }, 500); gracias a los que aportaron Saludos
0
una cosita mas stock el focus lo puse despues de rendear la ventana
0
o bien puedes poner un listener al evento "render" de tu formulario y ahi ejecutar el focus.
0
Hola a todos, Sólo apuntar que si se usa la versión 2.2 o la 3, el retardo en milisegundos puede ponerse como segundo parámetro del método focus.
Ext.getCmp('id').focus(true,500);
0
@jucahoca si funciona muchas gracias @stock no entiendo lo q me explicas stock, seria mucho pedir si me pudieras dar un ejemplo con codigo por favor
0
//creas el texfield
var textfield = new Ext.form.TextField({});
//aqui le das el texfield al form y todo lo que encesites mas
var form = new Ext.FormPanel(.........); 
//agregas el listener
form.on('render',function(){
    textfield.focus();  //gracias a los "closures" puedes hacer esto ;)
});
Así esperas a que se renderize y luego puedes asignarle el focus tranquilamente, saludos
0
Probando!!!, muchas gracias

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