Validar formulario con javascript
Vamos realizar un ejemplo de un formulario completo para validar. Las validaciones se hacen en el propio navegador antes de enviarlo. Si hubo algún campo no relleno o con información errónea, el formulario muestra el campo que está incorrecto y solicita al usuario que lo cambie. Si todos los datos del formulario son correctos se envía el formulario.
Hemos querido hacer un formulario sencillo, para que el ejercicio no se haga demasiado complicado. No obstante, se realizan validaciones en campos con distintos valores, para hacerlo más variado. Se comprueba un campo donde debe figurar un texto, otro donde debe introducirse un número mayor que 18 y un último con un campo select donde deben haber seleccionado un valor.
Lo primero que debemos considerar para que todo funcione como esperamos es declarar los tags del formulario y del botón submit como mostramos a continuación:
<form name="fvalida" method="POST"> ... <input type="button" value="Enviar" onclick="validarform()">
Nos debemos fijar expresamente en el tag <form> que no lleva action=»», los datos se envían mediante el método POST y tiene un name=»fvalida».
Tendremos un botón type=»button» que al hacer click en él, ejecutaremos la función validarform(). En medio de estos tags tendremos todos los inputs del formulario.
La función javascript validarform() es la que se encarga de mostrarnos los mensajes de error si en los campos del formulario no se ha introducido una cadena de texto esperada.
<script type="text/javascript">
function validarEntero(valor){
//intento convertir a entero.
//si era un entero no le afecta, si no lo era lo intenta convertir
valor = parseInt(valor)
//Compruebo si es un valor numérico
if (isNaN(valor)) {
//entonces (no es numero) devuelvo el valor cadena vacia
return ""
}else{
//En caso contrario (Si era un número) devuelvo el valor
return valor
}
}
function validarform(){
//valido el nombre
if (document.fvalida.nombre.value.length==0){
alert("Tiene que escribir su nombre")
document.fvalida.nombre.focus()
return 0;
}
//valido la edad. tiene que ser entero mayor que 18
edad = document.fvalida.edad.value
edad = validarEntero(edad)
document.fvalida.edad.value=edad
if (edad==""){
alert("Tiene que introducir un número entero en su edad.")
document.fvalida.edad.focus()
return 0;
}else{
if (edad<18){
alert("Debe ser mayor de 18 años.")
document.fvalida.edad.focus()
return 0;
}
}
//valido el interés
if (document.fvalida.interes.selectedIndex==0){
alert("Debe seleccionar un motivo de su contacto.")
document.fvalida.interes.focus()
return 0;
}
//el formulario se envia
alert("Muchas gracias por enviar el formulario");
document.fvalida.submit();
}
</script>
una Consulta, en que parte debo poner el action para enviar el formulario al otro formulario php ? muchas gracias
Hola,
El action es un atributo del elemento form.
Saludos
Hola, estoy probando este ejemplo, pero no me muestra los datos. O copié y pegué el código en un nuevo archivo tal cuál aparece aquí y al completar los campos y hacer click en enviar, aparece el mensaje de gracias por completar el formulario, pero no los datos, como aparece cuando pruebo el ejemplo desde aquí.
Qué necesito agregar para que me muestre los datos ?
Saludos y muchas gracias
Hola buenas tardes,
Debes fijarte bien el en código que se muestra en este artículo ya que no está al completo. Los campos de tu formulario deberás realizar la validación de cada uno de ellos obteniendo su valor y verificando si son correctos.
Saludos
—— validar y enviar en js ——
function mostrarError(elemento){
elemento.style.display=»inherit»;
}
function sacarError(elemento){
elemento.style.display=»none»;
}
function enviarFormulario(){
var nombre= document.getElementById(«nombre»);
var errornombre= document.getElementById(«errornombre»);
if(!nombre.value || nombre.value.length20){
mostrarError(errornombre);
nombre.focus();
return false;
}
else{
sacarError(errornombre);
}
}
—— validar y enviar en jq ——
$(document).ready(function(){
$(«#boton-enviar»).click(function(){
var nombre =$(«#nombre»);
var errornombre =$(«#errornombre»);
if(!nombre.val()){
errornombre.fadeIn(«slow»);
nombre.focus();
return false;
}
else{
errornombre.fadeOut();
}
})
})
—— validar y enviar en jq ——