Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Cómo detectar letras con acentos con keypress

Estas en el tema de Cómo detectar letras con acentos con keypress en el foro de Javascript en Foros del Web. Hola, lo que sucede es que estoy tratando de hacer una página en donde tengo un textarea y un div, cada que se escribe algo ...
  #1 (permalink)  
Antiguo 10/01/2014, 23:43
MCF
 
Fecha de Ingreso: marzo-2008
Mensajes: 126
Antigüedad: 16 años, 8 meses
Puntos: 4
Cómo detectar letras con acentos con keypress

Hola, lo que sucede es que estoy tratando de hacer una página en donde tengo un textarea y un div, cada que se escribe algo en el textarea se muestra en el div, con la función String.fromCharCode, el problema es que no detecta las vocales acentuadas, lo intenté con keypress y con keyup pero ninguno parece detectarlo, ¿alguien sabe como podría hacerlo ?
  #2 (permalink)  
Antiguo 11/01/2014, 05:32
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Cómo detectar letras con acentos con keypress

Si usas fromCharCode no va a dar resultado, ya que las vocales acentuadas, "ñ" y otros caractéres no tienen valor ASCII. Por otra parte JavaScript depende ligeramente de HTML así que para no tener problemas de codificación añade esto en el head:

Código HTML:
Ver original
  1. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

  #3 (permalink)  
Antiguo 11/01/2014, 06:21
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Cómo detectar letras con acentos con keypress

Y a partir de HTML5, solamente necesitas colocarlo así:

Código HTML:
Ver original
  1. <meta charset = UTF-8 />

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 11/01/2014, 07:25
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 2 meses
Puntos: 397
Respuesta: Cómo detectar letras con acentos con keypress

Cita:
Iniciado por Alexis88 Ver Mensaje
Y a partir de HTML5, solamente necesitas colocarlo así:

Código HTML:
Ver original
  1. <meta charset = UTF-8 />

Saludos
No olvides encerrar su valor entre comillas

Código HTML:
Ver original
  1. <meta charset="UTF-8" />

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #5 (permalink)  
Antiguo 11/01/2014, 07:34
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Cómo detectar letras con acentos con keypress

Cita:
Iniciado por jonni09lo Ver Mensaje
No olvides encerrar su valor entre comillas
Antes lo hacía así, pero vi que en las plantillas de JS Bin no las ponen y de todos modos va bien.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #6 (permalink)  
Antiguo 11/01/2014, 07:45
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 2 meses
Puntos: 397
Respuesta: Cómo detectar letras con acentos con keypress

No es una buena practica, además es mejor guiarse por los estándares... Digamos que soy mas purista en ese aspecto... muchas veces por no colocar las comillas pueden generar problemas y si la persona que es novata en este aspecto ve que le sugieren no usar comillas lo más seguro es que siga tirando por el mismo lado (ya que desconoce que si el valor de un atributo tiene mas de dos palabras deben si o si ir entre comillas para que tome el valor correctamente)

Así que para evitar confusiones y las cosas se hagan bien, es mejor dejar las cosas claras (no pienses a quien le respondes, piensa en quienes te leerán )

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #7 (permalink)  
Antiguo 11/01/2014, 07:51
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Cómo detectar letras con acentos con keypress

Técnicamente, no son dos palabras: UTF-8 <> UTF 8. Es como lo que sucede en el atributo class, no es lo mismo colocar "clase-uno" que "clase uno", la forma en que afectaría la desaparición del guión, se haría evidente al momento de aplicar los estilos.

De cualquier forma, es aconsejable hacerlo del modo establecido por el estándar de la W3C.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #8 (permalink)  
Antiguo 11/01/2014, 14:57
MCF
 
Fecha de Ingreso: marzo-2008
Mensajes: 126
Antigüedad: 16 años, 8 meses
Puntos: 4
Respuesta: Cómo detectar letras con acentos con keypress

Yo también lo hacía sin comillas, pero también son muchas las personas que me recomiendan que las ponga ya que no todos los navegadores lo reconocen igual; entonces no hay forma de detectarlo, o como podría hacerlo ?
  #9 (permalink)  
Antiguo 11/01/2014, 15:12
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Cómo detectar letras con acentos con keypress

¿Qué obligación hay de usar fromCharCode? Si lo utilizas te saldrán letras extrañas.

Recoge ese valor directamente y manipúlalo, teniendo el meta charset declarado.
  #10 (permalink)  
Antiguo 11/01/2014, 15:34
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Cómo detectar letras con acentos con keypress

¿Estás buscando hacer algo como esto?: http://jsbin.com/aKAliViS/1

Si la respuesta es sí, la forma es la siguiente:

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <html lang = "es">
  3.     <meta charset = "UTF-8" />
  4.     <titulo>De Textarea a Div</title>
  5. </head>
  6.     <textarea id = "uno"></textarea>
  7.     <div id = "dos"></div>
  8. </body>
  9. </html>

Un poco de estilos para ambos elementos:

Código CSS:
Ver original
  1. #dos{
  2.     border: .1em #000 solid;
  3.     overflow: auto;
  4. }
  5.  
  6. #uno, #dos{
  7.     width: 20em;
  8.     height: 5em;  
  9.     font-family: Verdana;
  10. }

Y con JS, asignas lo escrito en el textarea al div.

Código Javascript:
Ver original
  1. var textarea = document.getElementById("uno"),
  2.     div = document.getElementById("dos");
  3.  
  4. textarea.addEventListener("keypress", function(e){
  5.     var tecla = e.keyCode || e.which;
  6.     if (tecla == 8)
  7.         div.innerHTML = div.innerHTML.substring(0, div.innerHTML.length -2);
  8.     else
  9.         div.innerHTML += String.fromCharCode(tecla);
  10. }, false);

Además, cuando borres el último caracter del textarea, se eliminará su equivalente en el div. Esto se puede mejorar mucho, lo dejo en tus manos porque ando algo atareado con mi trabajo.

Saludos

P.D.: He intentado detectar la pulsación de la tecla backspace, previamente habiendo leído que su valor ASCII es 8, pero no sucede lo esperado. ¿Alguien sabe cómo detectar la pulsación de dicha tecla?.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 11/01/2014 a las 15:43
  #11 (permalink)  
Antiguo 11/01/2014, 15:43
MCF
 
Fecha de Ingreso: marzo-2008
Mensajes: 126
Antigüedad: 16 años, 8 meses
Puntos: 4
Respuesta: Cómo detectar letras con acentos con keypress

Cierto, lo siento olvidé decir algunos detalles, lo que sucede es que en el div tengo algunos span, las letras se irán agregando en diferentes span, o fuera de ellos, dependiendo de que letra sea, es por eso que necesito identificarlas, con keypress o keyup ni siquiera detecta bien la pulsación,estuve pensándolo un poco y tal vez podría detectar el cambio en el textarea y de ahí ya manipular todos los datos, ¿creen ustedes que esa es la mejor opción ?

Etiquetas: keypress
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 05:06.