Tengo un formulario el cual le he metido validación para el email tal y como aparece en una de las secciones de el faq, pero me gustaría tambien poder validar los demás campos y así mismo validar las opciones de una lista de selección, cómo puedo hacer eso? Además encontré otro script que me es útil para que no envien el formulario dos veces ya que el servidor es un poco lento a veces.
Cabe mencionar que no sé casi nada de JS.
Aquí el código HTML:
Código HTML:
<form name="formulario" id="formulario" action="send_email.php" onsubmit="return emailCheck(this.email.value)" method="post" target="_self"> <label for="nombre"><b>Nombre</b>:</label> <br /><input name="nombre" type="text" id="nombre" value="" size="30" maxlength="100" /> <br /> <label for="email"><b>Correo electrónico</b>:</label> <br /><input name="email" type="text" id="email" value="" size="30" maxlength="100" /> <br /> <label for="residencia"><b>País y ciudad de residencia</b>:</label> <br /><input name="residencia" type="text" id="residencia" value="" size="30" maxlength="100" /> <br /> <label for="temas"><b>Tema sobre el que desea información</b>:</label> <br /><select name="temas"> <option disabled selected value="0">--Seleccione una opción--</option> <option value="1">tema 1</option> <option value="2">tema 2</option> <option value="3">tema 3</option> <option value="4">tema 4</option> <option value="5">tema 5</option> <option value="6">tema 6</option> </select><br /> <label for="comentarios"><b>Comentarios</b>:</label> <br /> <textarea name="comentarios" id="comentarios" rows="6" cols="30"></textarea> <br /> <input name="enviar" type="submit" class="boton" id="enviar" value="enviar" /> </form>
y aquí el JS:
Código:
De antemano gracias function emailCheck (emailStr) { var emailPat=/^(.+)@(.+)$/; var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"; var validChars="\[^\\s" + specialChars + "\]"; var quotedUser="(\"[^\"]*\")"; var ipDomainPat=/^[(d{1,3}).(d{1,3}).(d{1,3}).(d{1,3})]$/; var atom=validChars + '+'; var word="(" + atom + "|" + quotedUser + ")"; var userPat=new RegExp("^" + word + "(\\." + word + ")*$"); var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$"); var matchArray=emailStr.match(emailPat); if (matchArray==null) { alert("La dirección de correo parece ser inválida (verifique las @ y .)") return false } var user=matchArray[1] var domain=matchArray[2] if (user.match(userPat)==null) { alert("El nombre de usuario parece ser inválido.") return false } var IPArray=domain.match(ipDomainPat) if (IPArray!=null) { for (var i=1;i<=4;i++) { if (IPArray[i]>255) { alert("La dirección IP de destino es inválida!") return false } } return true } var domainArray=domain.match(domainPat) if (domainArray==null) { alert("El dominio no parece ser válido.") return false } var atomPat=new RegExp(atom,"g") var domArr=domain.match(atomPat) var len=domArr.length if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) { alert("Las direcciones deben terminar con dominios de tres letras, o el código de país de dos letras.") return false } if (len<2) { var errStr="Dominio Inválido!"; alert(errStr) return false } return true; } //Funcion para impedir que se reenvie el formulario dos veces var cuenta=0; function enviado() { if (cuenta == 0) { cuenta++; return true; } else { alert("El formulario ya está siendo enviado, por favor aguarde un instante."); return false; } }