Hola con ayuda de una persona del foro cree el siguiente modulo para comprobar un formulario antes de enviarlo, en el explorer funciona perfectamente pero en firefox me va marcando en rojo todos campos incluso antes de enviarlo y al darle a enviar me pone "Por favor, ajustese al formato solicitado" agradezco cualquier aporte el codigo es el siguiente:
(function()
{
if(window.addEventListener) window.addEventListener("load", init, false);
else if (window.attachEvent) window.attachEvent("onload", init);
function init()
{
for(var i=0; i < document.forms.length; i++)
{
var f = document.forms[i];
var needsValidation = false;
for(j = 0; j < f.elements.length; j++)
{
var e = f.elements[j];
// if(e.type != "text") continue;
if(!(e.type == "text" || e.type == "password" || e.type == "checkbox") ) continue;
var pattern = e.getAttribute("pattern");
var required = e.getAttribute("required") != null;
if (required && !pattern)
{
pattern = "\\S";
e.setAttribute("pattern", pattern);
}
if (pattern)
{
e.onchange = validateOnChange;
needsValidation = true;
}
}
if (needsValidation) f.onsubmit = validateOnSubmit;
}
}
function validateOnChange()
{
var textfield = this;
var pattern = textfield.getAttribute("pattern");
var value = this.value;
if (value.search(pattern) == -1) textfield.className = "invalid";
else textfield.className = "valid";
var Password = this;
var pattern = Password.getAttribute("pattern");
var value = this.value;
if (value.search(pattern) == -1) Password.className = "invalid";
else Password.className = "valid";
}
function validateOnSubmit()
{
var invalid = false;
for(var i=0; i < this.elements.length; i++)
{
var e = this.elements[i];
if(e.type == "text" || e.type == "password")
{
if (e.onchange == validateOnChange)
{
e.onchange();
if (e.className == "invalid") invalid = true;
}
}
if(e.type=="checkbox" && e.name=="privacidad" && e.checked==0 ) invalid = true;
}
if(invalid)
{
alert('Campos obligatorios sin cubrir, rellene los campos y acepte los términos y condiciones.');
return false;
}
}
})();