Veremos cómo validar los campos de un formulario creado con Bootstrap y usando JavaScript y Jquery para la validación de los diferentes campos del formulario. Partimos de la base de que tenemos instalado Bootstrap 3.0 con Jquery para realizar este ejemplo.
Para realizar un ejemplo, crearemos un formulario con los siguientes campos:
- Nombre
- Mensaje
- Acepto LOPD
El formulario está creado con las características de estilo y clases de Bootstrap 3.0 He marcado en color verde el nombre que damos a cada campo, ya que lo utilizaremos en el código JavaScript para validarlos. También es importante poner unas etiquetas de span debajo de cada campo del formulario, son las que marco de color azul. Estas etiquetas recogerán el texto del error a la hora de validar el campo. Este texto se define en el JavaScript del fichero validator.js que veremos más adelante.
<form method="post" id="formulario-contacto" role="form" autocomplete="off">
<div class="form-group has-success">
<input class="form-control hidden" type="text" name="pack" value="contacto" readonly placeholder="Nombre" />
<input class="form-control" type="text" name="nombre" placeholder="Nombre" />
<span id="error" class="help-block"></span></div>
<div class="form-group has-error">
<input class="form-control" type="email" name="email" placeholder="Correo electrónico" />
<span id="error" class="help-block"></span></div>
<div class="form-group">
<textarea class="form-control" rows="14" name="mensaje" placeholder="Mensaje"></textarea>
<span id="error" class="help-block"></span></div>
<div class="checkbox">
<label>
<input type="checkbox" name="aceptolopd" value="Acepto Lopd" required />
He leído y acepto la política de protección de datos.</label>
</div>
<div class="form-group">
<button class="btn btn-primary btn-lg" type="submit">Enviar </button>
</div>
</form>
Necesitaremos un archivo de Javascript que llamaremos «validator.js» y que contenga las rutinas necesarias para la validación del formulario. Pongo más abajo el código integro que usaremos para este ejemplo de formulario y que se puede adaptar según la necesidad de cada uno. Como veréis, es muy sencillo y comprensible, y no tendréis ningún problema a la hora de implementar más campos en el formulario y validarlos.
Es evidente que tendremos que hacer la llamada al archivo validator.js desde el html que contiene el formulario. Lo haremos con la siguiente línea de código, y que en la medida de lo posible pondremos al final de la página para que cargue primero los contenidos de la web y luego los recursos externos.
<script src="assets/js/validator.js"></script>
Para este ejemplo, el código javascript se guarda dentro de la carpeta assets/js pero vosotros podéis ponerlo donde lo requiera vuestro proyecto. En el código destaco en color verde, el nombre de los campos que se han puesto en el formulario Html y el nombre del formulario, que en este ejemplo es «formulario-contacto» precedido de una # como se ve en el código de abajo. Al final del código, destaco en negrita los métodos form.action y form.submit, que el primero contiene el nombre de la página PHP que recibirá los datos del formulario y que realizará el envío del correo electrónico a quien corresponda.
Como podéis ver en el código de abajo, es muy sencillo poder añadir el nombre de otros campos del formulario, en caso de necesitarlos, ya que se trata de un Array y su estructura es muy sencilla de comprender.
Hay que tener en cuenta que esta validación únicamente se hace a nivel de cliente, es decir, si el cliente tiene desactivado JavaScript de su navegador (Que no es lo habitual), no funcionará. No obstante, siempre se puede hacer una validación del lado del servidor, mediante la página que recoge los campos del formulario.
Código para copiar y guardar con el nombre de archivo validator.js
// JavaScript Validación
$('document').ready(function(){
// Validación para campos de texto exclusivo, sin caracteres especiales ni números
var nameregex = /^[a-zA-Z ]+$/;
$.validator.addMethod("validname", function( value, element ) {
return this.optional( element ) || nameregex.test( value );
});
// Máscara para validación de Email
var eregex = /^([a-zA-Z0-9_.-+])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
$.validator.addMethod("validemail", function( value, element ) {
return this.optional( element ) || eregex.test( value );
});
$("#formulario-contacto").validate({
rules:
{
nombre: {
required: true,
minlength: 8
},
email: {
required: true,
validemail: true
},
mensaje: {
required: true,
minlength: 20,
maxlength: 300
},
},
messages:
{
nombre: {
required: "Tu Nombre y Apellidos son Importantes",
minlength: "Tu Nombre es demasiado corto"
},
email: {
required: "Por Favor, introduzca una dirección de correo",
validemail: "Introduzca correctamente su correo"
},
mensaje: {
required: "Tu Nombre y Apellidos son Importantes",
minlength: "Tu Mensaje es demasiado corto",
maxlength: "Tu Mensaje supera los 300 caracteres"
},
},
errorPlacement : function(error, element) {
$(element).closest('.form-group').find('.help-block').html(error.html());
},
highlight : function(element) {
$(element).closest('.form-group').removeClass('has-success').addClass('has-error');
},
unhighlight: function(element, errorClass, validClass) {
$(element).closest('.form-group').removeClass('has-error').addClass('has-success');
$(element).closest('.form-group').find('.help-block').html('');
},
submitHandler: function(form) {
form.action="pagina que envia el correo.php";
form.submit();
alert('ok');
}
});
})
Solución Individual