Foros del Web » Programando para Internet » Javascript »

.keyCode y .which devuelven 0 en Firefox con 4 teclas

Estas en el tema de .keyCode y .which devuelven 0 en Firefox con 4 teclas en el foro de Javascript en Foros del Web. Hola gente. Quiero hacer una validación con JavaScript en un campo de texto, pero hay 4 teclas que me traen problemas en Firefox (Internet Explorer, ...
  #1 (permalink)  
Antiguo 19/12/2012, 19:16
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 15 años, 9 meses
Puntos: 26
.keyCode y .which devuelven 0 en Firefox con 4 teclas

Hola gente.

Quiero hacer una validación con JavaScript en un campo de texto, pero hay 4 teclas que me traen problemas en Firefox (Internet Explorer, Chrome y Opera no tienen problemas).

Las teclas que me traen problemas son las que contienen estos caracteres:
  1. º ª \
  2. ¡ ¿
  3. ç Ç }
  4. ´ ¨ {

Los valores que debería obtener son 220, 221, 191 y 222, respectivamente, pero siempre me devuelven 0. Dejo aquí un código para probarlo:
Código:
<html>
	<head>
		<script type="text/javascript">
			function obtener_tecla(event) {
				alert('event.keyCode: ' + event.keyCode + ' - event.which:' + event.which);
			}
		</script>
	</head>
	
	<body>
		<input type="text" onkeydown="obtener_tecla(event);" />
	</body>
</html>
¿Conocen alguna solución para esto? He dado vueltas por este foro y por Google, pero no encuentro nada que me solucione el problema.

Desde ya, gracias. Un saludo.

Última edición por RabidFish; 19/12/2012 a las 19:33
  #2 (permalink)  
Antiguo 20/12/2012, 08:43
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: .keyCode y .which devuelven 0 en Firefox con 4 teclas

prueba ahora
Cita:
function obtener_tecla(evt) {
var evento = evt || window.event;
var propiedad = evento.charCode || evento.keyCode;

alert(propiedad);

}
lee esta documentación
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 20/12/2012, 10:56
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 15 años, 9 meses
Puntos: 26
Respuesta: .keyCode y .which devuelven 0 en Firefox con 4 teclas

Muchas gracias por tu respuesta, Isabel.

Probé lo que me dijiste:
Código:
<html>
	<head>
		<script type="text/javascript">
			function obtener_tecla(evt) {
				var evento = evt || window.event;
				var propiedad = evento.charCode || evento.keyCode;

				alert(propiedad);
			}
		</script>
	</head>
	
	<body>
		<input type="text" onkeydown="obtener_tecla(evt);" />
	</body>
</html>
Pero en Firefox (17.0.1) sigue devolviéndome cero.

Saludos.
  #4 (permalink)  
Antiguo 20/12/2012, 15:13
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: .keyCode y .which devuelven 0 en Firefox con 4 teclas

dos errores
Cita:
onkeydown="obtener_tecla(evt);"
  • el evento ha de ser onkeypress
  • a la función has de enviarle event como parámetro, no evt
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #5 (permalink)  
Antiguo 20/12/2012, 15:56
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 15 años, 9 meses
Puntos: 26
Respuesta: .keyCode y .which devuelven 0 en Firefox con 4 teclas

Isabel:

Con esos cambios me funcionan bien 3 de las teclas que mencioné, pero hay dos teclas que contienen acentos (`^[ y ´¨{) que sólo me devuelven el valor si después pulso otra tecla más, no a la primera vez. Esto hace que el caracter se escriba en el campo de texto antes de poder retornar false a la función para evitar que se ingrese ese caracter no permitido. Por eso estaba usando onKeyDown y no onKeyPress.
  #6 (permalink)  
Antiguo 20/12/2012, 16:44
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: .keyCode y .which devuelven 0 en Firefox con 4 teclas

tenía la impresión que ibas por ahí. esto ocurre por no hacer una buena exposición de lo que se quiere llegar a logras.

la solución no es solo detectar la tecla pulsada, sino también usar expresiones regulares
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}

Etiquetas: firefox, html, input
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 14:14.