Foros del Web » Programando para Internet » Javascript »

no me valida el email en firefox

Estas en el tema de no me valida el email en firefox en el foro de Javascript en Foros del Web. Hola a todos/as. tengo un formulario que lo resumiré únicamente en dos campos: Nombre y email: Código PHP: < form name = "form"  id = "form"  ...
  #1 (permalink)  
Antiguo 12/08/2008, 09:30
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
no me valida el email en firefox

Hola a todos/as. tengo un formulario que lo resumiré únicamente en dos campos: Nombre y email:

Código PHP:
<form name="form" id="form" onReset="return Limpiar();" action="procesa.php" ENCTYPE="multipart/form-data" METHOD="POST"
Nombre
<
input type="text" size=55 name="nombre" onkeypress "return pulsar(event)" onKeyUp="deshabilita(this.form);" onBlur="valida(this);"><br>
<
span class="mensajeay" id="nombreobl">Campo obligatorio</span><br>
Email:
<
input type="text" size=55 name="email" onkeypress "return pulsar(event)" onKeyUp="deshabilita(this.form);" onblur="document.getElementById('emailobl').style.visibility =(ValidarEmail('email')) ? 'hidden' : 'visible';"><br>
<
span class="mensajeay" id="emailobl">Campo obligatorioIntroduzca un email v&#225;lido</span>
<input type="submit" name="B1" value="Enviar"  disabled
bien. las funciones que utilizo para validar son las siguientes:

Código PHP:
//Funcion limpiar
function Limpiar(){

    if (
window.confirm('¡¡¡Atención!!! Se van a eliminar todos los datos introducidos')){
         return 
true;
     } 
     return 
false;        
}
///valida campos no vacíos
function valida(c)
{
//alert("validando");
var i,v;
if(
c)
 {
 
i=c.name+"obl";
 (
c.value.length<3)?v="visible":v="hidden";
 
document.getElementById(i).style.visibility=v;
 }
}
///evitar espacios en blanco
function pulsar(e) {
    
tecla = (document.all) ? e.keyCode e.which;
    if (
tecla==8) return true;
    
patron =/s/;
    
te String.fromCharCode(tecla);
    return !
patron.test(te);
}

///deshabilita botón enviar si campos vacíos
function deshabilita(form)
{
    if ((
form.email.value != "") && (form.direccion.value != "") && (form.telefono.value != "") && (form.provincia.value!= "") && (form.ciudad.value.length >= 3) && (form.nombre.value.length != "") && ValidarEmail("email") )
    { 
        
form.B1.disabled false
    } 
    else 
    { 
        
form.B1.disabled true
    }
}

function 
ValidarEmail(field)
{
var 
retVal true;
var 
email = /^[w-.]+@([w-]+.)+[w-]{2,4}$/;
if (!
email.test(document.getElementById(field).value) ) 
{
retVal false
}
return 
retVal

¿cuál es el problema? pues el problema es que en ie todo funciona a la perfección. me valida tanto el campo nombre como el campo email, verificando no metan espacios en blanco como datos del campo y que el email sea válido. además, cuando no se cumple las premisas muestra el mensaje de ayuda justo debajo del input y además el botón de enviar aparece desactivado en tanto en cuanto no esté todo correctamente. ya digo, en ie todo va OK. el problema es en firefox. en firefox no me valida el campo email o mejor dicho, me valida el campo email pero no me muestra el mensaje de ayuda si está mal cumplimentado y no me reactiva el botón enviar cuando está todo correctametne cumplimentado. ¿a qué es debido?
  #2 (permalink)  
Antiguo 12/08/2008, 10:00
Avatar de Avatar810  
Fecha de Ingreso: agosto-2007
Ubicación: Por rumbos Regios
Mensajes: 485
Antigüedad: 16 años, 8 meses
Puntos: 23
Respuesta: no me valida el email en firefox

No estoy del todo seguro, pero me parece que deberia de fallar tambien en IE7

creo que el error esta aqui
<input type="text" size=55 name="email" onkeypress = "return pulsar(event)" onKeyUp="deshabilita(this.form);" onblur="document.getElementById('emailobl').style. visibility =(ValidarEmail('email')) ? 'hidden' : 'visible';"><

lo que haces es validar la cada 'email' en lugar del valor que contiene el campo email, en lo personal preferiria sacarlo a una funcion. creo que asi podrias ver mas claramente el error
  #3 (permalink)  
Antiguo 12/08/2008, 10:30
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
Respuesta: no me valida el email en firefox

no no....si fuera eso no lo validaría en ie tampoco y ahí funciona todo correctamente. además, por qué en firefox no muestra el mensaje de ayuda?
  #4 (permalink)  
Antiguo 12/08/2008, 10:33
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: no me valida el email en firefox

El primer error que veo es que le pasas a la función ValidarEmail el nombre del input mientras que la función toma el elemento con getElementById, así que deberías asignarle el id correspondiente.

¿Puedes poner un enlace a tu página? Creo que va a ser más fácil ayudarte.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 13/08/2008, 09:42
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
Respuesta: no me valida el email en firefox

nada sigue sin ir. a ver. el codigo es el que he puesto: el form es este:

Código PHP:
<form name="form" id="form" onReset="return Limpiar();" action="procesa.php" ENCTYPE="multipart/form-data" METHOD="POST">  
Nombre:  
<
input type="text" size=55 name="nombre" onkeypress "return pulsar(event)" onKeyUp="deshabilita(this.form);" onBlur="valida(this);"><br
<
span class="mensajeay" id="nombreobl">Campo obligatorio</span><br
Email
<
input type="text" size=55 name="email" onkeypress "return pulsar(event)" onKeyUp="deshabilita(this.form);" onblur="document.getElementById('emailobl').style.visibility =(ValidarEmail('email')) ? 'hidden' : 'visible';"><br
<
span class="mensajeay" id="emailobl">Campo obligatorioIntroduzca un email válido</span> <br> <br
<
input type="submit" name="B1" value="Enviar"  disabled
Bien. las funciones que utiliza ese form son estas:
Código PHP:
//Funcion limpiar
function Limpiar(){

    if (
window.confirm('¡¡¡Atención!!! Se van a eliminar todos los datos introducidos')){
         return 
true;
     } 
     return 
false;        
}
            
//Validar Formulario
///valida campos no vacíos
function valida(c)
{
//alert("validando");
var i,v;
if(
c)
 {
 
i=c.name+"obl";
 (
c.value.length<3)?v="visible":v="hidden";
 
document.getElementById(i).style.visibility=v;
 }
}
///evitar espacios en blanco
function pulsar(e) {
    
tecla = (document.all) ? e.keyCode e.which;
    if (
tecla==8) return true;
    
patron =/s/;
    
te String.fromCharCode(tecla);
    return !
patron.test(te);
}

///deshabilita botón enviar si campos vacíos
function deshabilita(form)
{
    if ((
form.email.value != "") && (form.nombre.value.length != "") && (form.nombre.value.length >= && ValidarEmail("email") )
    { 
        
form.B1.disabled false
    } 
    else 
    { 
        
form.B1.disabled true
    }
}

function 
ValidarEmail(field)
{
var 
retVal true;
var 
email = /^[w-.]+@([w-]+.)+[w-]{2,4}$/;
if (!
email.test(document.getElementById(field).value) ) 
{
retVal false
}
return 
retVal

bien. como os digo en ie lo hace todo bien (probadlo) pero en firefox no hace dos cosas:
primero no da el mensaje de ayuda del email si no introduces un email válido y
segundo: no activa el botón enviar.

a qué es debido. la propiedad "disabled" no funciona en firefox?
  #6 (permalink)  
Antiguo 13/08/2008, 09:47
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: no me valida el email en firefox

No corregiste lo que te dije sobre el id del email
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 13/08/2008, 10:01
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: no me valida el email en firefox

Lo que intenta decirte David El Grande es que haces:
Llamas a ValidaEmail("email"), entonces, dentro de la función haces:
document.getElementById(field).value
Pero la función getElementById lo que hace es exactamente lo que dice, busca un elemento según su id. Y tú, en el campo email, no tienes puesto ningún id.

Tu problema es que no es lo mismo name que id. Pero IE los confunde y lo hace mal aunque eso quiera decir que te funciona.
  #8 (permalink)  
Antiguo 13/08/2008, 10:03
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: no me valida el email en firefox

Otro problema al parecer está en tu expresión regular y también en el if que tienes en la función deshabilita.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
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 21:57.