Foros del Web » Programando para Internet » Javascript »

focus() no funciona en firefox

Estas en el tema de focus() no funciona en firefox en el foro de Javascript en Foros del Web. Hola me cansé de buscar y no encuentro la solucion, POR QUE NO FUNCIONE ESTO EN FIREFOX ? @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original ...
  #1 (permalink)  
Antiguo 01/12/2010, 23:21
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
focus() no funciona en firefox

Hola me cansé de buscar y no encuentro la solucion,

POR QUE NO FUNCIONE ESTO EN FIREFOX ?

Código Javascript:
Ver original
  1. function situarCursor(){
  2.    
  3.    
  4.     document.sss.textfield.focus();
  5.     alert('aaaaa');
  6.  
  7.    
  8. }
TAMPOCO FUNCIONA ASI
Código Javascript:
Ver original
  1. function situarCursor(){
  2.    
  3.    
  4.     alert('aaaaa');
  5.         document.sss.textfield.focus();
  6.  
  7.    
  8. }

NI ASI


Código Javascript:
Ver original
  1. function situarCursor(){
  2.    
  3.    
  4.     alert('aaaaa');
  5.         document.sss.textfield.focus();
  6.         return false;
  7.  
  8.    
  9. }

Y EN LOS OTRO NAVEGADORES SI

SALUDOS
__________________
la la la
  #2 (permalink)  
Antiguo 02/12/2010, 06:20
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: focus() no funciona en firefox

que yo sepa, ff no tiene ningún problema con el métedo focus(). prueba a hacer referencia al control por su id en vez de por su name
  #3 (permalink)  
Antiguo 02/12/2010, 07:49
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: focus() no funciona en firefox

Ya probé y tampoco funciona
__________________
la la la
  #4 (permalink)  
Antiguo 02/12/2010, 08:05
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: focus() no funciona en firefox

¿Cómo estás usando la función?
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #5 (permalink)  
Antiguo 02/12/2010, 08:10
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: focus() no funciona en firefox

la uso en un campo de texto, ,y la llamo con onblur, .... este campo es generado con javascript (será ese el problema?)

igualmente te comento que probé hacer otro archivo con un formulario, y varios campos text
y con esta funcion, y la llamé con onblur y onclick y nada funciona, pero el en IE si
__________________
la la la
  #6 (permalink)  
Antiguo 02/12/2010, 08:16
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: focus() no funciona en firefox

Esque creo recordar que FF no permite poner un focus() al mismo campo en el onblur, así que habrá que aguantarse
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #7 (permalink)  
Antiguo 02/12/2010, 08:23
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: focus() no funciona en firefox

lo probé con un boton con onclick y na funciona tampoco , osea focus() no funciona de nunguna manera en "mi" firefox
__________________
la la la
  #8 (permalink)  
Antiguo 02/12/2010, 08:33
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: focus() no funciona en firefox

¿Y lo estás haciendo así?:
Código HTML:
Ver original
  1. <input type='text' id='campo' />
  2. <button onclick='document.getElementById("campo").focus()'>Pulsa</button>
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #9 (permalink)  
Antiguo 02/12/2010, 18:45
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: focus() no funciona en firefox

Funciona todo menos el focus()

le hago esto y funciona:
document.getElementById('preguntas'+id).value = 'INGRESE LA PREGUNTA';

esto tambien:
document.getElementById('preguntas'+id).className= "borde_input";

pero esto NOOOO:
document.getElementById('preguntas'+id).focus();


Como puede ser posible ??????
__________________
la la la
  #10 (permalink)  
Antiguo 02/12/2010, 20:11
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: focus() no funciona en firefox

Sigo descubriendo cosas,
Con onClick funciona pero con onBlur NO



.
__________________
la la la
  #11 (permalink)  
Antiguo 02/12/2010, 20:25
 
Fecha de Ingreso: octubre-2010
Mensajes: 83
Antigüedad: 13 años, 5 meses
Puntos: 4
Respuesta: focus() no funciona en firefox

Estas tratando de disparar el focus en el blur?
  #12 (permalink)  
Antiguo 02/12/2010, 20:32
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: focus() no funciona en firefox

Cita:
Iniciado por snahor_ Ver Mensaje
Estas tratando de disparar el focus en el blur?
Si . llamo a onBlur a una funcion que valida si el value del campo está vacio, si es asi le hago focus a ese campo, para que el user escriba ahí. se entiende?
__________________
la la la
  #13 (permalink)  
Antiguo 03/12/2010, 16:12
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: focus() no funciona en firefox

Si alquien fuera tan amable de copiar y pegar este codigo y probarlo, quiero saber porque no funciona el FOCUS() en firefox.
Lo raro es que el ALERT() funciona perfectamente pero el focus no

Código Javascript:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  5. <title>Crear elemento HTML</title>
  6. <script type="text/javascript">
  7. <!--
  8. //CREAR PREGUNTA***************************************
  9. var num=1;
  10. function creaPreguntaSimple(){
  11.  
  12.     var capa_preguntas = document.getElementById("preguntas");
  13.     var todo = capa_preguntas.innerHTML;
  14.     var div_preguntas = document.createElement("div");
  15.    
  16.     div_preguntas.id='div_preguntas'+num;
  17.     div_preguntas.innerHTML ="<input type='text' id='preguntas"+num+"' onBlur='compruebaVacio("+num+");'>";
  18.     capa_preguntas.appendChild(div_preguntas);
  19.    
  20.    
  21.  num++;    
  22. }
  23. function compruebaVacio(id){
  24.         alert("Despues de este ALERT() deberia hacer FOCUS() en el campo de texto, y no lo hace..........POR QUEEEEEEE  ? POR QUE FUNCIONA EL ALERT Y NO EL FOCUS()");
  25.         document.getElementById('preguntas'+id).focus();
  26. }
  27. //-->
  28. </script>
  29.  
  30. </head>
  31. <body>
  32. <div id="preguntas">
  33. <input onClick="creaPreguntaSimple()" type="button" name="pregunta_simple" id="pregunta_simple" value="Crear Pregunta Simple">
  34. </div>
  35. </body>
  36. </html>
__________________
la la la
  #14 (permalink)  
Antiguo 03/12/2010, 16:16
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: focus() no funciona en firefox

Si la función la tienes así nada más es normal porque FF evita que el usuario no se pueda mover de ese campo, según esa función cuando pierde el foco tiene que volver a recibirlo, así que no podría salir. Prueba a poner un if para comprobar el value del input y quizás te funcione, pero no te aseguro nada.
Saludos.
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #15 (permalink)  
Antiguo 03/12/2010, 16:18
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: focus() no funciona en firefox

Ya lo probé y no funciona, probé mil cosas, aca puse el codigo lo mas reducido posible para que se entienda bien

Entonces no tiene solucion?? como podría hacer , no puedo creeer que no haya una solucion, osea es un error de firefox?
__________________
la la la
  #16 (permalink)  
Antiguo 03/12/2010, 16:34
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: focus() no funciona en firefox

No es un error, es un 'privilegio' que se le da al usuario, porque a mí no me gustaría qe una página no me dejara salir de un campo porque no sea correcto, aunque quede muy bien que cuando salgas se cree el div directamente. Puedes poner un botón al lado del textarea como en tuenti o facebook.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #17 (permalink)  
Antiguo 03/12/2010, 16:35
 
Fecha de Ingreso: diciembre-2010
Mensajes: 12
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: focus() no funciona en firefox

Hola
El error de base es que por ejemplo
var capa_preguntas = document.getElementById("preguntas");
el getElementById se usa cuando tenes un input no un div.
Para trabajar con los div como lo estas haciendo deberías usar xajax.
Lo probé el código en chrome y sus herramientas de desarrolladores te lo cuento porque es una buena manera de depurar código.
Suerte

Eli Z.
  #18 (permalink)  
Antiguo 03/12/2010, 16:40
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: focus() no funciona en firefox

Podrias instalar firebug para que te diga si tienes errores en el js, luego no estoy seguro si estas aplicando el html de manera correcta, donde tu pones
Código Javascript:
Ver original
  1. div_preguntas.innerHTML ="<input type='text' id='preguntas"+num+"' onBlur='compruebaVacio("+num+");'>"
yo pondria
Código Javascript:
Ver original
  1. div_preguntas.innerHTML ='<input type="text" id="preguntas'+num+'" onBlur="compruebaVacio('+num+');">'

ya que hasta donde recuerdo los atributos de las etiquetas html las debes declarar con comillas y no apostrofes.

aunque suelo comprobar los campos al final, si necesitas comprobarlo en el blur, tambien podrias hacer algo como esto:


Código Javascript:
Ver original
  1. div_preguntas.innerHTML ='<input type="text" id="preguntas'+num+'" onBlur="if(this.value==\'\'){this.focus();}">'
  #19 (permalink)  
Antiguo 03/12/2010, 16:41
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: focus() no funciona en firefox

getElementById() se usa para cualquier elemento que tenga id.
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #20 (permalink)  
Antiguo 06/12/2010, 14:41
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: focus() no funciona en firefox

Hice en los últimos años varios ejemplos que cambiaban el foco, y no recordaba que en Mozilla no funcionara.
La verdad es que no disponía de tiempo, pero cuando vi este tema, lo mismo me puse a buscar una alternativa, porque pensé que me podían servir para actualizar o corregir viejos códigos que no iban a andar. Pero en algún momento se me ocurrió probarlo.


¿Hasta qué versión Firefox no reconoce el focus()? (Estoy preguntando en serio, porque aún si encuentro una solución no creo que ya la pueda verificar).

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html><head>

<title>Crear elemento HTML</title>
<script type="text/javascript">
<!--
var num=1;
function creaPreguntaSimple(){     
var capa_preguntas = document.getElementById("preguntas");    
var todo = capa_preguntas.innerHTML;    
var div_preguntas = document.createElement("div");        
div_preguntas.id='div_preguntas'+num;    
div_preguntas.innerHTML ="<input type='text' id='preguntas"+num+"'>";    
capa_preguntas.appendChild(div_preguntas); 
setTimeout("compruebaVacio(num);num++;", 10);        
     }

function compruebaVacio(id){  
//alert("Pone foco en " + id)      
document.getElementById('preguntas'+id).focus();
}
//-->
</script> 

</head>

<body>

<div id="preguntas">
<input onClick="creaPreguntaSimple()" type="button" 
name="pregunta_simple" id="pregunta_simple" value="Crear Pregunta Simple"></div>
</body></html>
Yo lo hubiese hecho distinto, truman_truman; pero traté de ajustarme lo más posible al código que pusiste. El problema es que tampoco entiendo muy bien qué quieres hacer.
Ahora cuando me confirmen el dato voy a probar con otros métodos y dejo algún ejemplo para que me digan si anda. Bueno, si todavía alguien tiene un FF viejo.
  #21 (permalink)  
Antiguo 06/12/2010, 15:58
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: focus() no funciona en firefox

Hola ante todo gracias, si te fijas arriba puse el codigo, copialo y probalo; al salir del campo de texto se produce un alert y quiero que haga focus en campo de texto luego de cerrar ese alert.
Encontré una forma de hacerlo pero es muy atada con alambre jeje. Por favor fijate si lo podés hacer
Gracias
__________________
la la la
  #22 (permalink)  
Antiguo 06/12/2010, 21:55
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: focus() no funciona en firefox

no he seguido muy bien este tema y tengo algo de vagancia leerlo detenidamente. mis disculpas... de todos modos comprobe tanto tu código como el de @furoya. el tuyo tampoco me funciona en firefox. no es un error, @cronos ya trato de explicarlo. es un privilegio que firefox cede al usuario y bajo ciertas circunstancias no se puede manejar el foco. existe una forma de "forzarlo" pero me resisto mencionarlo, pues es bien molestoso cuando un script controla al usuario. recuerda que un script debería mejorar la experiencia de navegación al usuario.

cuantas soluciones existen, no lo sé. pero comprendiendo como es que ocurren las limitaciones nos ayuda a buscar soluciones. básicamente la restrincción de focus ocurre cuando invocas el método en el evento blur. por tanto, la invocación de focus debe suceder fuera del call stack del evento. en javascript -me parece a mi- la única forma de ejecutar un código fuera del call stack son con funciones que se interpretan en el ámbito global: setTimeout, setInterval, eval, Function. con setTimeout es cuestión de asignar el foco luego de un tiempo.
Código:
<input onblur="var that = this; setTimeout(function(){that.focus();}, 0);" />
en este ejemplo el foco siempre se restaura al campo. en tu caso, deberas invocar setTimeout bajo cierta condiciones.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #23 (permalink)  
Antiguo 06/12/2010, 22:41
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: focus() no funciona en firefox

Ok soy bastante novato todavia en javascript y no se muy bien usar esas funciones que pones ahí... Igualmente a mi se me había ocurrido una forma y era:

Tenemos un campo y lo llamamos campo UNO.
Crear un campo de texto lo llamamos campo DOS y aplicarle estilo css, ancho 1px alto 1px, borde color blanco... esto hace que sea invisible.


entonces al salir del UNO se ejecuta onBlur haciendo focus() en el campo DOS , que es invisible, y al salir de este campo tambien se ejecuta onblur Pero haciendo focus el el campo UNO... de esta manera el user no podrá salir sin haber escrito algo en el campo...

jejejeje es una solucion "atada con alambre" pero me funcionó jeje

Saludos
__________________
la la la
  #24 (permalink)  
Antiguo 07/12/2010, 15:49
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: focus() no funciona en firefox

Cita:
Iniciado por truman_truman Ver Mensaje
Hola ante todo gracias, si te fijas arriba puse el codigo, copialo y probalo; al salir del campo de texto se produce un alert y quiero que haga focus en campo de texto luego de cerrar ese alert.
Encontré una forma de hacerlo pero es muy atada con alambre jeje. Por favor fijate si lo podés hacer
Gracias


Sí, lo vi. De ahí saqué el que puse.

Pero no entiendo qué sentido tiene eso. Lo que necesitamos que nos expliques no es el capricho de que aparezca una alerta y mande el foco, porque eso se puede —y debe— hacer mejor con otro método. En todo caso, lo que nos tienes que decir es que no quieres que abandonen el campo si está vacío, o mejor, que no quieres que agreguen otro nuevo hasta completar el anterior.

Pero eso ya está hecho. Con buscarlo en el Foro es suficiente.

Hay un error de interpretación en el evento en Firefox y creo que en otros. Pero es más bien porque las alertas están hechas con CSS. Por eso para evitar un loop, te dan la opción de ignorar la siguiente vuelta del mensaje ... y así se te acabó el aviso.

Al menos ya quedó claro que focus() si anda en Mozilla.
  #25 (permalink)  
Antiguo 13/03/2015, 08:50
 
Fecha de Ingreso: abril-2012
Mensajes: 7
Antigüedad: 12 años
Puntos: 0
Respuesta: focus() no funciona en firefox

usa este:
document.form1.sss.textfield.focus();

Etiquetas: firefox, focus
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 04:16.