Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Javascript (http://www.forosdelweb.com/f13/)
-   -   No funciona el window.event en Mozilla FireFox (http://www.forosdelweb.com/f13/no-funciona-window-event-mozilla-firefox-453781/)

anas 03/01/2007 08:04

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

JavierB 03/01/2007 08:16

Re: No funciona el window.event en Mozilla FireFox
 
Hola anas

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

Saludos, :adios:

boterogomezalex 03/01/2007 13:00

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);" >

anas 04/01/2007 18:55

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. :)

Diablito69 16/04/2007 21:59

Re: No funciona el window.event en Mozilla FireFox
 
Cita:

Iniciado por anas (Mensaje 1842116)
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

sub7 28/08/2009 17:33

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

sergiot_2007 21/10/2010 21:43

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


La zona horaria es GMT -6. Ahora son las 08:47.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.