Foros del Web » Programando para Internet » Javascript »

window.event.keyCode en FireFox

Estas en el tema de window.event.keyCode en FireFox en el foro de Javascript en Foros del Web. Hola a todos vereis tengo un formulario con campos en los que sólo se pueden rellenar números... y utilizo la siguiente función: function evalua(){ var ...
  #1 (permalink)  
Antiguo 06/06/2006, 02:00
Avatar de Expinete  
Fecha de Ingreso: abril-2006
Ubicación: Zaragoza
Mensajes: 236
Antigüedad: 18 años
Puntos: 3
window.event.keyCode en FireFox

Hola a todos vereis tengo un formulario con campos en los que sólo se pueden rellenar números... y utilizo la siguiente función:

function evalua(){
var key=window.event.keyCode;//codigo de tecla.
if (key < 48 || key > 57){//si no es numero
window.event.keyCode=0;//anula la entrada de texto.
}}

que me funciona la mar de bien en IE pero no asi en Firefox, alguien me podría decir que es lo que tendría que cambiar?

Gracias a todos por su tiempo
  #2 (permalink)  
Antiguo 06/06/2006, 02:02
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola Expinete

Echa un vistazo a esta página sobre como validar datos

Saludos,
  #3 (permalink)  
Antiguo 06/06/2006, 02:23
Avatar de Expinete  
Fecha de Ingreso: abril-2006
Ubicación: Zaragoza
Mensajes: 236
Antigüedad: 18 años
Puntos: 3
Gracias JavierB pero he utilizado ese código y me hace lo mismo, de hecho peor :P porque ahora tampoco me funciona en IE
  #4 (permalink)  
Antiguo 06/06/2006, 02:25
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
No te funcion por que tienes que crear un objeto para detectar la tecla para FIREFOX, en tu codigo solo es para M$.
Prueba con ese..
keyEvent= (keyEvent) ? keyEvent:window.event;
  #5 (permalink)  
Antiguo 06/06/2006, 02:59
Avatar de Expinete  
Fecha de Ingreso: abril-2006
Ubicación: Zaragoza
Mensajes: 236
Antigüedad: 18 años
Puntos: 3
Lo sieno B** pero no entiendo lo que me quieres decir... de todas formas gracias a los dos por la ayuda.
  #6 (permalink)  
Antiguo 06/06/2006, 03:01
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola de nuevo.

El código que te indiqué está probado en IE, Firefox y Opera. ¿Puedes poner el código completo que estás usando, a ver si pillamos el fallo?

Saludos,
  #7 (permalink)  
Antiguo 06/06/2006, 08:11
Avatar de Expinete  
Fecha de Ingreso: abril-2006
Ubicación: Zaragoza
Mensajes: 236
Antigüedad: 18 años
Puntos: 3
La función que utilizo es la siguiente:

function EvaluateText(cadena, obj){
opc = false;
if (cadena == "%d")
if (event.keyCode > 47 && event.keyCode < 58)
opc = true;
if (cadena == "%f"){
if (event.keyCode > 47 && event.keyCode < 58)
opc = true;
if (obj.value.search("[.*]") == -1 && obj.value.length != 0)
if (event.keyCode == 46)
opc = true;
}
if(opc == false)
event.returnValue = false;
}

##################################################
y en el campo de texto la llamo así:

<td valign="top" class="textos"><INPUT name="cp" type="text" class="texfield" size="10" onKeyPress="EvaluateText('%f', this);"> </td>

pero este código sólo funciona en IE ...
Gracias de nuevo por la ayuda.
  #8 (permalink)  
Antiguo 06/06/2006, 08:39
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Rehola.
Código:
function EvaluateText(cadena, obj, e){
opc = false;
tecla = (document.all) ? e.keyCode : e.which;
if (cadena == "%d")
if (tecla > 47 && tecla < 58)
opc = true;
if (cadena == "%f"){
if (tecla > 47 && tecla < 58)
opc = true;
if (obj.value.search("[.*]") == -1 && obj.value.length != 0)
if (tecla == 46)
opc = true;
}
return opc;
}
<INPUT name="cp" type="text" class="texfield" size="10" onKeyPress="return EvaluateText('%f', this,event);">

Espero que te sirva. Saludos,
  #9 (permalink)  
Antiguo 06/06/2006, 08:50
Avatar de Expinete  
Fecha de Ingreso: abril-2006
Ubicación: Zaragoza
Mensajes: 236
Antigüedad: 18 años
Puntos: 3
Gracias de nuevo JavierB pero... también había probado eso antes...
y como podrás suponer tampoco funciona... ni en firefox ni en IE no sé que narices pasa pero no me lo reconoce... supongo que la variable event se creará al pulsar una tecla en el texfield...
Con lo fácil que debe ser... y lo dificil que lo veo
EN fin muchas gracias JavierB, seguiré dandole vueltas al asunto a ver si lo soluciono, quizás sea el orden de las variables :P.
  #10 (permalink)  
Antiguo 06/06/2006, 09:51
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Cuando dices que no funciona ¿a que te refieres? ¿Te da algún error? ¿Lo tienes en algún sitio donde podamos echarle un vistazo?

Saludos,
  #11 (permalink)  
Antiguo 06/06/2006, 10:06
Avatar de Expinete  
Fecha de Ingreso: abril-2006
Ubicación: Zaragoza
Mensajes: 236
Antigüedad: 18 años
Puntos: 3
si, lo puedes comprobar en esta direccion:
http://www.audinforsystem.es/solicitudinformacion.php

en el telefono,cp y fax lo valido.
Gracias
  #12 (permalink)  
Antiguo 06/06/2006, 10:18
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola otra vez.

El input que quieras validar, tienes que ponerlo así:

<INPUT name="cp" type="text" class="texfield" size="10" onKeyPress="EvaluateText('%f', this, event);">

Y el código de la función:
Código:
function EvaluateText(cadena, obj, e){
opc = false;
tecla = (document.all) ? e.keyCode : e.which;
Espero que ahora te funcione. Saludos,
  #13 (permalink)  
Antiguo 06/06/2006, 10:38
Avatar de Expinete  
Fecha de Ingreso: abril-2006
Ubicación: Zaragoza
Mensajes: 236
Antigüedad: 18 años
Puntos: 3
Pos va a ser que no. XDDDDDDD en fin que a ver si lo saco pero muchas gracias por tu interes, puedes comprobar de todas formas que el código está como me has dicho pero que no asi de paso le echas un vistacillo a la web :P
Muchisimas gracias JavierB.
  #14 (permalink)  
Antiguo 06/06/2006, 10:43
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
¡Opps! Esta vez ha sido un despiste mío. Falta algo más en el input:

onKeyPress="return EvaluateText('%f', this, event);">

Saludos,
  #15 (permalink)  
Antiguo 07/06/2006, 01:26
Avatar de Expinete  
Fecha de Ingreso: abril-2006
Ubicación: Zaragoza
Mensajes: 236
Antigüedad: 18 años
Puntos: 3
Muchiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiis imas gracias JavierB ahora si que funciona
QUe pasada los quebraderos de cabeza que me ha dado la funciocita de las narices :P bueno JavierB de verdad no sabes como te lo agradezco Muchas gracias.
  #16 (permalink)  
Antiguo 07/06/2006, 08:42
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Muuuchas de nada. Ya sabía yo que al final lo conseguirías
  #17 (permalink)  
Antiguo 07/06/2006, 09:07
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 19 años, 10 meses
Puntos: 4
yo pense q la unica forma en firefox era usar addEventListener() y recibiendo el objeto evento de forma implícita... no entiendo, de donde sale el objeto "event" si no existe window.event??
__________________
Internet Explorer SuckS
Download FireFox
  #18 (permalink)  
Antiguo 07/06/2006, 17:00
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Cita:
Iniciado por JavierB
Hola otra vez.

El input que quieras validar, tienes que ponerlo así:

<INPUT name="cp" type="text" class="texfield" size="10" onKeyPress="EvaluateText('%f', this, event);">
JavierB q significa '%f' ...??
  #19 (permalink)  
Antiguo 08/06/2006, 00:52
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola B**

Ese código es de Expinete, yo solo he hice algunas modificaciones para que funcionara. Parece ser que '%f' es un parámetro que le pasa a la función para hacer distintas validaciones según cada caso.

Saludos,
  #20 (permalink)  
Antiguo 12/06/2006, 05:26
 
Fecha de Ingreso: junio-2006
Mensajes: 2
Antigüedad: 17 años, 10 meses
Puntos: 0
Hola he hecho un pequeño cambio en la función, quiero que si el usuario introduce un punto automáticamente se convierta en una coma. El caso es que IE funciona bien, pero en firefox no.. Ideas??

function EvaluateText(cadena, obj, e)
{
opc = false;
tecla = (document.all) ? e.keyCode : e.which;
if (cadena == "%d")
{
if (tecla > 47 && tecla < 58)
{
opc = true;
}
}
if (cadena == "%f")
{
if (tecla > 47 && tecla < 58)
opc = true;
if ( obj.value.search("[,*]") == -1 && obj.value.length != 0 )
{
if (tecla == 46 || tecla == 44 ) // es el 46= punto, y 44 = coma
{ opc = true; }

if (tecla == 46 )
{
if (document.all)
{ e.keyCode= 44;
}
else
{
e.which=44;
}

}
}
}
return opc;
}
  #21 (permalink)  
Antiguo 10/02/2009, 17:16
 
Fecha de Ingreso: agosto-2008
Mensajes: 4
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: window.event.keyCode en FireFox

el tema es viejo pero esta es una solución simplificada basada en las soluciones de arriba, lo probe en FF3 y IE6 y funcionó

Código:
function numeros(obj, e){
	opc = false;
	tecla = (document.all) ? event.keyCode : e.which;
	if (tecla == 0) {opc = true;} // permitir las teclas de funciones F1, F2, Insert, etc.
	if (tecla == 8) {opc = true;} // tecla backspace
	if (tecla == 13) {evento_enter()} // tecla enter (ver nota)
	if (tecla >= 48 && tecla <= 57) {opc = true;} // sólo numeros
	return opc;
}

function evento_enter() {
return false;
}
y el input
Código:
<input type="text" onKeyPress="return numeros(this, event);">
NOTA: Puedes omitir la linea de la tecla 13 para que enter no haga nada (entiendase no enviar el formulario) o utilizarla para que llame una funcion sin necesidad de enviar el formulario.

De la misma manera puedes agregar o quitar teclas permitidas solo consiguete una tabla ASCII y guiate por allí.

En el ejemplo la funcion evento_enter() no hace absolutamente nada pero entienden la idea.

Última edición por Egomanus; 10/02/2009 a las 17:28
  #22 (permalink)  
Antiguo 28/08/2009, 17:32
 
Fecha de Ingreso: junio-2008
Mensajes: 34
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: window.event.keyCode en FireFox

Hola

Yo estaba intentando que en mi formulario de login, no se pudiese poner el espacio.
En IExplore me funcionaba perfectamente, pero en Firefox como a muchos de vosotros no.

Pues dandole vueltas, mirando por san google y con la ayuda de un amigo logré sacarlo. de forma simple y limpia, vamos se ve facil.

La función
Código HTML:
<script language="javascript">
function keypres(e) {
if (((document.all)?e.keyCode:e.which)=="32"){
	alert("¡Caracteres no válidos!")
	}
}
</script> 
El input del formulario
Código HTML:
<input type="text" maxlength="10" name="usu" size="10" onKeyPress="keypres(event)"> 
Funciona en IExplore 8 y en Firefox 3.0.13
Espero ayudar a alguien xD

Un saludo
  #23 (permalink)  
Antiguo 25/10/2011, 10:11
 
Fecha de Ingreso: octubre-2011
Mensajes: 1
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: window.event.keyCode en FireFox

Mmm veo que el foro es super viejo pero ando con esta duda, no logro hacer que me funcione en firefox, hago un buscador predictivo con una libreria que encontre por internet la cual he modificado en algunas cositas para que me funciona para cualquier finalidad, en IE me funciona perfecto pero en Firefox 7 falla al detectar la tecla.

Creo el DOM
function nDAdi(noRen)
{
var cDevo = document.getElementById("cDevo"+noRen).value;

if(cDevo > 0){
var esta = document.getElementById("esta"+noRen).value;

if(esta == 3 || esta == 4){

var myBody = document.getElementById("cAdi"+noRen);
var myInput = document.createElement("input");
myInput.type = "text";
myInput.name = "nItem"+noRen;
myInput.id = "nItem"+noRen;
myInput.size = "15";
myInput.value = "";
myInput.style.boderColor = "#A44747";
myInput.onkeyup = function(){
autocompleta(this.name,'auto/itemReu','suge'+noRen, 'event');
}
myBody.appendChild(myInput);

var myDiv = document.createElement("div");
myDiv.id = "suge"+noRen;
myDiv.className = "sAjax";
myBody.appendChild(myDiv);
}
else{
document.getElementById("cAdi"+noRen).innerHTML = "";
}
}
else{
document.getElementById("esta"+noRen).value = "";
}
}

y el evento autocompleta hace varias cosas solo voy a montar la parte que me falta
function autocompleta(nombreCampo,nombreArchivo,cSuge,e) {
var tecla = teclaX(e);
alert(tecla)
if(tecla == 40) { // Flecha Abajo
if(elementoSeleccionado+1 < sugerencias.length) {
elementoSeleccionado++;
}
muestraSugerencias(cSuge,nombreCampo);
}
else if(tecla == 38) { // Flecha Arriba
if(elementoSeleccionado > 0) {
elementoSeleccionado--;
}
muestraSugerencias(cSuge,nombreCampo);
}
else if(tecla == 13) { // ENTER o Intro
seleccionaElemento(nombreCampo,cSuge);
}... sigue

y la otra funcion es esta
function teclaX(e) { // 1
tecla = (document.all) ? te = window.event.keyCode : e.which; // 2
if (tecla==8) return true; // 3
//te = String.fromCharCode(tecla); // 5
return te; // 6
}

Y me devuelve un blanco en Firefox agradezco si me puede ayudar.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:00.