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 obligatorio. Introduzca un email vá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?