Foros del Web » Programando para Internet » Javascript »

No funciona el window.event en Mozilla FireFox

Estas en el tema de No funciona el window.event en Mozilla FireFox en el foro de Javascript en Foros del Web. El problema es que tengo una función que acepta solo números decimales que no esta funcionando en FireFox, pero si en IE. La misma es ...
  #1 (permalink)  
Antiguo 03/01/2007, 08:04
 
Fecha de Ingreso: diciembre-2005
Mensajes: 6
Antigüedad: 18 años, 4 meses
Puntos: 0
No funciona el window.event en Mozilla FireFox

El problema es que tengo una función que acepta solo números decimales que no esta funcionando en FireFox, pero si en IE. La misma es llamada desde:

<input size="10" maxlength="10" name="txtMontoPagado" onkeypress="javascript:ValidarNumero(this.name);">

Mi javascript asociado a esto es:

function ValidarDecimal(txtCampo)
{
var ac;
var texto = document.forms.item(0).item(txtCampo).value;

if (window.event) {
ac = window.event.keyCode;
if ((ac >= 48) && (ac <= 57) || (ac == 44) || (ac == 46) || (ac == 13) || (ac == 8) || (ac == 9)) {

}
else {
if (ac == 46) {
window.event.keyCode = ac - 2;
}
else {
if (ac == 13) {
window.lnkIntro.click();
}
else {
//window.event.keyCode = " ";
window.event.returnValue = false;
}
}
//document.forms.item(0).item(txtCampo).value = texto;
texto = "";
}
}
}

Me gustaria saber como puedo adaptar este código para que también funcione ne Mozilla Firefox?
Desde ya, muchas gracias.
Saludos
  #2 (permalink)  
Antiguo 03/01/2007, 08:16
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Re: No funciona el window.event en Mozilla FireFox

Hola anas

Echa un vistazo a e ste código para validar formularios

Saludos,
  #3 (permalink)  
Antiguo 03/01/2007, 13:00
 
Fecha de Ingreso: enero-2007
Mensajes: 4
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: No funciona el window.event en Mozilla FireFox

debes tener en cuenta que firefox no maneja el objeto event implicitamente como lo hace ie, para esto debes enviarselo como parametro de la funcion, una forma es

<input size="10" maxlength="10" name="txtMontoPagado" onkeypress="javascript:ValidarNumero(event,this.na me);">

function ValidarDecimal(event,txtCampo)
{
/*codigo de la funcion*/
}

lo segundo es que firefox no maneja la propiedad keycode, sino which, la cual te da el numero de la tecla, pero para hacer mas practico podrias hacer un codigo como el siguiente


function teclaEvento(evento){ if (evento.keyCode)
return evento.keyCode;
else
return evento.which;
}

function continuarEvento(evento,continuar){ if (evento.preventDefault && !continuar){
evento.preventDefault();
evento.stopPropagation();
}
return continuar;
}
function ValidarDecimal(event,txtCampo)
{
var ac;
//no utilizo el name ya tengo la referencia del text
var texto = txtCampo.value;


ac = teclaEvento(event);
if ((ac >= 48) && (ac <= 57) || (ac == 44) || (ac == 46) || (ac == 13) || (ac == 8) || (ac == 9)) {

}
else {
if (ac == 46) {
//en fire fox no puedes cambiar el codigo de la tecla
//o no lo he visto lo que puedes hacer es cancelar el evento
//window.event.keyCode = ac - 2;
continuarEvento(event,false)
}
else {
if (ac == 13) {
window.lnkIntro.click();
}
else {
//window.event.keyCode = " ";
//esta funcion te garantiza que canceles el evento tanto en ie como en ff
return continuarEvento(event,false)
}
}
//document.forms.item(0).item(txtCampo).value = texto;
texto = "";
}
}
}

<input size="10" maxlength="10" name="txtMontoPagado" onkeypress="javascript:ValidarNumero(event,this);" >
  #4 (permalink)  
Antiguo 04/01/2007, 18:55
 
Fecha de Ingreso: diciembre-2005
Mensajes: 6
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: No funciona el window.event en Mozilla FireFox

Muchas gracias boterogomezalex.
Igual te comento que si me funciona reemplazar un evento en FireFox. Realmente haz sido de ayuda. :)
  #5 (permalink)  
Antiguo 16/04/2007, 21:59
 
Fecha de Ingreso: agosto-2005
Mensajes: 57
Antigüedad: 18 años, 7 meses
Puntos: 0
Re: No funciona el window.event en Mozilla FireFox

Cita:
Iniciado por anas Ver Mensaje
Muchas gracias boterogomezalex.
Igual te comento que si me funciona reemplazar un evento en FireFox. Realmente haz sido de ayuda. :)
tengo un problema muy parecido al tuyo, en IE me funciona perfecto pero no sé como reemplazar el evento en firefox, como lo hiciste???


salu2
  #6 (permalink)  
Antiguo 28/08/2009, 17:33
 
Fecha de Ingreso: junio-2008
Mensajes: 34
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: No funciona el window.event en Mozilla 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
  #7 (permalink)  
Antiguo 21/10/2010, 21:43
 
Fecha de Ingreso: julio-2009
Ubicación: Capital federal
Mensajes: 5
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: No funciona el window.event en Mozilla FireFox

Buenas,

Alguien logro que funcione sin llamar a la función con parámetro, sino añadiendo el evento con window.addEventListener

Imagínese que tienen unos cuantos elementos que funcionan diferente y se repiten en varias páginas.
Habría que poner onKeyPress="keypres(event)" en cada elemento!!!

Ejemplo:

html
<div id="objetos">
<p id="obj1">obj1</p>
<p id="obj2">obj2</p>
<p id="obj3">obj3</p >
</div>

Script:
mi_funcion = function() {
var lis = document.getElementById("objetos").getElementsByTa gName('p');
for (var i=0; i<lis.length; i++) {
lis[i].onmouseover=function() {

var id_tag = window.event.srcElement.id; /*Funciona en IE en FireFox NO */
alert('ID: ' + id_tag);

}

}
}

if (window.attachEvent){window.attachEvent('onload', mi_funcion);} //IE
if (window.addEventListener){window.addEventListener( 'load', mi_funcion, false);} //FOX
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 (incluyéndote)




La zona horaria es GMT -6. Ahora son las 03:34.