Foros del Web » Programando para Internet » Javascript »

JS con Firefox

Estas en el tema de JS con Firefox en el foro de Javascript en Foros del Web. Hola. Resulta que ando haciendo un desarrollo y estoy probando la compatibilidad con Firefox/Mozilla. Pero tengo algunas cosillas: 1) Usualmente utilizo esta funcion para validar ...
  #1 (permalink)  
Antiguo 17/08/2004, 14:23
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
JS con Firefox

Hola. Resulta que ando haciendo un desarrollo y estoy probando la compatibilidad con Firefox/Mozilla. Pero tengo algunas cosillas:

1) Usualmente utilizo esta funcion para validar que solo usen enteros (creo que pirateada de las FAQs ), pero resulta que solo el IE la utiliza, Firefox no funciona. ¿Saben como le puedo hacer?
Código PHP:
function soloEnteros(){
    var 
key window.event.keyCode;
    if (
key 48 || key 57){
        
window.event.keyCode=0;
    }

--------
2) He leído que el IE hace varios vicios, y que hay formas correctas de acceder a los elementos del documento, en lo particular suelo usar document.all.form.miSelect, pero esta manera esta entre esa lista negra :'-(

¿Cual es la forma adecuada para que mi site este dentro de los estandares?
-------
3) Meto validaciones del tipo (esto no es relacionado con Firefox)
Código:
<script>
funcion valida(){
	if(eresFeo)
		alert('no debe pasar a la otra forma');
	else
		alert('como eres guapo si pasas')
		form.submit();
}
</script>
<form.... onClick="valida();">
Pero resulta que aunque sea feo se hace el submit. ¿Hay manera de cancelar el submit?

Gracias
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche

Última edición por Mithrandir; 17/08/2004 a las 14:26
  #2 (permalink)  
Antiguo 17/08/2004, 14:50
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61

Hola Mith, voy a intentar contestar tus múltiples preguntas antes de que alguien se me adelante. Cosa del todo dificil:

Respecto a la primera pregunta tienes razón en la familia de Nescafé se tratan los eventos de otra manera. Pero me está vedado el decirte como... vamos, que no lo sé!

La segunda pregunta tiene una respuesta fácil:

Si quieres acceder a un formulario puedes poner:

document.forms[numero de formulario en el código de la página o su name entre comillas].elements[número del elemento o su name]. En un ejemplo sería:
Código HTML:
<form name="pepote">
<input type="text" name="panchito" />
</form> 
Para acceder al valor de panchito:
Código HTML:
document.forms["pepote"].elements["panchito"].value;
ó
Código HTML:
document.forms[0].elements[0].value; //El primer elemento del primer formulario
Respecto a la tercera pregunta, mi querido Mith, prueba a poner:
Código HTML:
<script>
funcion valida(){
	if(eresFeo)
		{alert('no debe pasar a la otra forma');
                          return false;}

	else
		{alert('como eres guapo si pasas')
		return true;}
}
</script>
<form.... onSubmit="return valida();"> 
Un saludo!!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Última edición por KarlanKas; 17/08/2004 a las 14:54
  #3 (permalink)  
Antiguo 19/08/2004, 13:47
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Del punto 3: Entendido, al parecer no tengo ese return, lo checo (lo de las llaves fue error al postear )

Del punto 2: perfectamente claro, gracias embajador de Gamínides

Del punto 1, pues sigo esperando si alguien sabe, pues era mi principal problema
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche

Última edición por Mithrandir; 19/08/2004 a las 13:50
  #4 (permalink)  
Antiguo 19/08/2004, 14:37
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Holas Mith

La 3, está contestada y no hay respuesta alternativa

La 2, está contestada y añado que puedes también referenciar a los elementos de un form así

document.nombreDelFormu.nombreDelCampo

O bien por su posición dentro del array que se crea automáticamente en el documento al crearse los elementos

document.forms[0].elements[posición]

fíjate que puedes jugar a que te muestre todos los nombres, o tipos de campos referenciándolos por su posición, prueba a jugar con esto

<script type="text/javascript">
function campitos(){
for(m=0;m<document.forms[0].elements.length;m++){
alert("nombre: " + document.forms[0].elements[m].name + "; tipo: " + document.forms[0].elements[m].type)
}
}
onload = campitos
</script>

La 3, don KarlanKas (holaaaa ) no pudo definirlo mejor!

Cita:
Iniciado por Abducido
vamos, que no lo sé
Lo secundo

Al día de hoy y por más vueltas que le he dado, no logro encontrarle la lógica a la forma que usa NS y derivados.... el único que parece que lo sabe dominar es JavierB, esperemos que se asoma por aquí y nos ilumine (de nuevo)

De todas formas, y para evitar compatibilidades.... por qué no haces la verificación de otra forma sin usar el event ????

Si quieres que sólo entren números, puedes pedirle algo tipo....

<input type="text" etc. onKeyDown="if(isNaN(this.value)){this.value=''}" />

saludillos...
  #5 (permalink)  
Antiguo 19/08/2004, 14:50
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Holas!

Al leer esto:

<input type="text" etc. onKeyDown="if(isNaN(this.value)){this.value=''}" />

He pensado ¿y qué sentido tiene darle de valor una llave? Pero me he dado cuenta de que es comilla simple, comilla simple, cerrar llave y doble comilla. Lo que creo que falla de la solución de tunait (hola requete guapa!)es que como le pongas una letra o algo que no debas te borra todo. Y si ponemos...

<input
type="text" etc.
onKeyDown="if(isNaN(this.value)){this.value=this.v alue.substring(0,(this.value.length-1))}" />

creo que lo resolvemos... salvo que ponga un espacio...
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Última edición por KarlanKas; 19/08/2004 a las 14:56
  #6 (permalink)  
Antiguo 20/08/2004, 13:18
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Perfecto, todo funciona correctamente, con gente como ustedes hasta me agrada mas el letrerito de "moderador"

Solo hay un detalle, cualquiera de las 2 variantes de la funcion que me han propuesto tiene este efecto:

Se visualiza el caracter que tecleo, pero borra los anteriores, de manera que si presiono una letra la veo, y se borra hasta la siguiente tecla que pulse. (incluso con value = '' como inicialmente indica tunait)

He probado con onKeyPress, onKeyDown, onKeyUp y el unico que borra el caracter presionado es onKeyUp, pero lo muestra mientras tengo la tecla presionada, por lo que si alcanza a ser visible el efecto (me parece poco estetico)

Mis cabilaciones me dicen que lo que sucede es que el evento se manda llamar ANTES de que el caracter forme parte del value del objeto, pero si esto es cierto debe de haber una forma de anular el caracter en el buffer..... ¿Mis cabilaciones son correctas?

Si es asi.. ¿Como lo borro?
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
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 06:50.