Foros del Web » Programando para Internet » Javascript »

focus() no funciona bien en Chrome y Safari

Estas en el tema de focus() no funciona bien en Chrome y Safari en el foro de Javascript en Foros del Web. Muy buenas. Tratando de poder añadir emoticones (o sus correspondientes signos/caracteres) a un elemento textárea (¡¡como aquí!!, en estos foros) me encuentro con el problema ...
  #1 (permalink)  
Antiguo 29/01/2012, 11:18
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 13 años, 6 meses
Puntos: 0
focus() no funciona bien en Chrome y Safari

Muy buenas.
Tratando de poder añadir emoticones (o sus correspondientes signos/caracteres) a un elemento textárea (¡¡como aquí!!, en estos foros) me encuentro con el problema de que tanto Chrome como Firefox no sitúan el cursor al final del texto, sino justo antes del emoticón.

Tengo ésto en Javascript:

Código Javascript:
Ver original
  1. ..
  2. <script type="text/javascript">
  3. function Smile(texto){
  4. /*formulario se corresponde con el nombre del form donde está el textárea. texto es el id del textárea.*/
  5. document.formulario.texto.value = document.formulario.texto.value + texto;
  6. document.formulario.texto.focus();
  7. ..
  8. }
Este es el enlace donde está la imagen:

Código HTML:
Ver original
  1. ..
  2. <a href="javascript:Smile(' [;)] ')"><img src="...
  3. ..


</script>

¿Alguna idea, por favor, de cómo puedo solucionar ésto y que el cursor se sitúe siempre después del emoticón (o sus caracteres correspondientes)?


¡Muchísimas gracias!
  #2 (permalink)  
Antiguo 30/01/2012, 07:56
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Respuesta: focus() no funciona bien en Chrome y Safari

añadimos la ID texto al textarea:

Código HTML:
Ver original
  1. <textarea name="texto" id="texto"></textarea>


Código Javascript:
Ver original
  1. function Smile(texto)
  2. {
  3.   // buscamos el elemento por ID
  4.   var textarea = document.getElementById('texto');
  5.   textarea.value = textarea.value + texto;
  6.   textarea.focus();
  7. }

si no quieres ponerle una ID al textarea:
Código Javascript:
Ver original
  1. function Smile(texto)
  2. {
  3.   // buscamos todos los forms del documento
  4.   var form = document.getElementsByTagName('form');
  5.   // el primer form es el nuestro
  6.   form = form[0];
  7.   // buscamos el textarea dentro del formulario
  8.   var textarea = form.getElementsByTagName('textarea');
  9.   // el primer textarea es el nuestro
  10.   textarea = textarea[0];
  11.   textarea.value = textarea.value + texto;
  12.   textarea.focus();
  13. }

esta es la forma correcta de trabajar con formularios los "document.formulario.texto" no es la apropiada ;)
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #3 (permalink)  
Antiguo 30/01/2012, 08:07
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: focus() no funciona bien en Chrome y Safari

Muchas gracias Zital.
Creo que ya había probado con la primera forma, pero me ocurre lo mismo. Tanto en Chrome como en Firefox el cursor se sitúa antes del emoticon, no después.
  #4 (permalink)  
Antiguo 30/01/2012, 08:18
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Respuesta: focus() no funciona bien en Chrome y Safari

mira esto:

http://snipplr.com/view/5144/getset-...html-textarea/
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #5 (permalink)  
Antiguo 30/01/2012, 08:32
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: focus() no funciona bien en Chrome y Safari

perdón, quería decir Safari, no Firefox.
Zital, gracias, no sé si el código que me has pasado es para Firefox e IE

p.d veo que funciona en chrome, a ver si puedo sacar algo de ahí, pues:).Gracias de nuevo.

Última edición por breaststroke; 30/01/2012 a las 08:45
  #6 (permalink)  
Antiguo 30/01/2012, 10:35
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: focus() no funciona bien en Chrome y Safari

Me parece que me funciona de lujo, adaptándolo a lo que necesito.
Así que ¡muchísimas gracias!

Etiquetas: chrome, focus, formulario, safari
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 02:51.