Foros del Web » Programando para Internet » Javascript »

Problema con .focus()

Estas en el tema de Problema con .focus() en el foro de Javascript en Foros del Web. este es mi scipt <script language="JavaScript"> function Numero(Valor, Tipo, Nombre) { if (isNaN(Valor)) { alert("el valor introducido no es numerico"); eval("document.frmHabitaciones." + (Nombre) +".focus()") } ...
  #1 (permalink)  
Antiguo 09/06/2003, 20:03
Avatar de Darksoft  
Fecha de Ingreso: mayo-2002
Mensajes: 106
Antigüedad: 22 años
Puntos: 0
Problema con .focus()

este es mi scipt

<script language="JavaScript">
function Numero(Valor, Tipo, Nombre) {
if (isNaN(Valor)) {
alert("el valor introducido no es numerico");
eval("document.frmHabitaciones." + (Nombre) +".focus()")
}
}
</script>


y esto es cuando lo llamo

<input name="txtCantidad" type="text" id="txtCantidad2" size="3" maxlength="3" onChange"Numero(this.value,'Entero',this.name);">

el problema es que cuando cambio de textbox me muestra correctamente el alert, pero no me pone el focus en el textbox que acabo de dejar atras.

Gracias por adelantado
  #2 (permalink)  
Antiguo 10/06/2003, 02:03
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 3 meses
Puntos: 772
Hola, Darksoft.

Si quieres que se ejecute la función al cambiar de textbox, deberías utilizar el evento onBlur:

<input name="txtCantidad" type="text" id="txtCantidad2" size="3" maxlength="3"
onBlur="Numero(this.value,'Entero',this.name);">

Espero que te sirva. Saludos,
  #3 (permalink)  
Antiguo 10/06/2003, 02:03
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 6 meses
Puntos: 4
Supongo que habrá sido un error al escribir, pero te falta = después de onChange.

Este mismo problema ya lo planteamos hace poco, es decir, el recuperar el foco en un elemento de un formulario del que el nombre no tiene porqué ser fijo. Hasta la fecha parece que no hay solución y el antiguo mensaje se va yendo cada vez más abajo.

A ver si alguien sabe resolverlo.

Suerte.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #4 (permalink)  
Antiguo 10/06/2003, 02:04
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 3 meses
Puntos: 772
Oops, Bravenap.

Hemos contestado en el mismísimo minuto. Esto es sincronización y lo demás tonterías.

Saludos,
  #5 (permalink)  
Antiguo 10/06/2003, 02:10
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 6 meses
Puntos: 4
Ahora que veo el mensaje de JavierB ( Hola ), en teoría un textbox no se considera que ha cambiado hasta que pierde el foco, por lo que estaría bien utilizado el onChange.

El problema está en la linea eval("document........

Pues sí, en el mismo minuto, de hecho primero aparecías tú y cuando he vuelto a mirar el mensaje estaba yo primero , je je.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #6 (permalink)  
Antiguo 10/06/2003, 04:22
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Hola buen Lunes Yá sé que es martes
Puede evitarse perfectamente el eval()

¿por qué no pruebas así?

document.frmHabitaciones.Nombre.focus()
  #7 (permalink)  
Antiguo 10/06/2003, 10:35
Avatar de Darksoft  
Fecha de Ingreso: mayo-2002
Mensajes: 106
Antigüedad: 22 años
Puntos: 0
tunait, me parece que he probado todas las opciones posibles de concatenar y evaluar una linea, al final envie esa porque era la ultima que probé, pero la verdad es ke no hay ninguna que vaya bien
  #8 (permalink)  
Antiguo 10/06/2003, 10:39
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
´Darksoft,

prueba tal y como te dije y además cambia la llamada a la función así


<input name="txtCantidad" type="text" id="txtCantidad2" size="3" maxlength="3" onChange"Numero(this.value,'Entero',this);">
  #9 (permalink)  
Antiguo 10/06/2003, 11:47
Avatar de Darksoft  
Fecha de Ingreso: mayo-2002
Mensajes: 106
Antigüedad: 22 años
Puntos: 0
SOLUCIONADO!!!!!!

function Numero(Valor, Tipo, Nombre) {
if (isNaN(Valor)) {
alert("el valor introducido no es numerico");
setTimeout("eval('document.frmHabitaciones."+Nombr e+".focus()');", 10);
}
}

Asi he conseguido que funcione, supongo que el problema no era que no hacia el focus, sino que lo hacia antes de cambiar al siguiente textbox, con lo que primero hacia el focus correctamente y luego iba al siguiente textbox. No se si me explico pero asi funciona.

Gracias por las ideas de todos
Espero que el codigo sea util a mas de uno

ya de paso, podria hacer de alguan manera que se seleccionase todo el texto escrito, osea que cuando el focus vuelva al textbox anterior, el texto de ese textbox este seleccionado, con lo que al escribir ya se borrase el antiguo valor
  #10 (permalink)  
Antiguo 10/06/2003, 12:27
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 3 meses
Puntos: 772
Hola, Darksoft.

Siguiendo con tu código sería algo así:

setTimeout("eval('document.frmHabitaciones."+Nombr e+".select() ');", 10);

Espero que esta vez te resulte más fácil. Saludos,
  #11 (permalink)  
Antiguo 11/06/2003, 01:43
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 6 meses
Puntos: 4
Una apreciación tunait, si no estoy equivocado cuando yo ponía algo así

document.frmHabitaciones.Nombre.focus()

me intentaba buscar algo en el formulario que tuviera el nombre "Nombre" y no lo consideraba como una variable, por lo que al no encontrarlo daba error.

Al final a resultado que hay que evaluar la cadena de texto como bien nos ha indicado Darksoft (gracias).

Iré buscando por el foro porque había mensajes similares que se habían quedado sin responder.

Un saludo a todos.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:43.