Buenas tardes y feliz fin de semana !
Estoy peleandome con esta librería y creo que es muy buena , pero tengo un problema , el formulario se me valida correctamente pero hay algunos valores cómo el dni y el email que verificio si existen en la bd y es obvio que si existen uno u otro , esto lo hago de la siguiente forma.
Código Javascript
:
Ver original$( ".dni" ).keyup(function() {
var dni = $('.dni').val();
console.log(dni);
$.ajax({
url: 'finddni/'+dni,
type: 'get',
success: function (data) {
if(data.userfind.length === 0){
$('.checkdni').empty();
$('.checkdni').append("Te puedes registrar con este DNI");
}else{
$('.checkdni').empty();
$('.checkdni').append("El DNI ya existe");
}
}
});
});
Me funciona correctamente , pero hay alguna forma de añadirlo a la librería validate ?
Código Javascript
:
Ver original//form validation rules
$("#registro").validate({
debug: true,
errorElement: "em",
validClass: "has-success",
success: function(label) {
label.removeClass("error").addClass("success");
},
rules: {
nif: {
required: true,
esdnivalido: true
},
name: {
required: true,
minlength:3,
onlyletter: true,
},
surname: {
required: true,
minlength:3,
onlyletter: true
},
files: {
required: true,
onlyphotos:true
},
multiplo: {
required: true
},
comunidades: {
required: true
},
provincias: {
required: true
},
pueblos: {
required: true
},
email: {
required: true,
valemail:true
},
password: {
required: true,
minlength:3
},
confirmarpassword: {
required: true,
equalTo: "#password"
},
presentacion: {
minlength:15,
required: true
}
},
messages: {
nif: {
required: "El NIF es obligatorio",
minlength: "El NIF tiene que tener una longitud de 9 carácteres",
},
name: {
required: "El nombre es obligatorio",
minlength:"El nombre tiene que tener una longitud de 3 carácteres"
},
surname: {
required: "El apellido es obligatorio",
minlength: "El apellido tiene que tener una longitud de 3 carácteres"
},
files: {
required: "La foto de perfil es obligatoria"
},
multiplo: {
required: "La foto de perfil es obligatoria",
onlyphotos:"El formato de las fotos es incorrecto"
},
birthday: {
required: "La fecha de nacimiento es obligatorio",
},
comunidades: {
required: "La comunidad autónoma es obligatorio",
},
provincias: {
required: "La província es obligatoria",
},
pueblos: {
required: "El pueblo es obligatorio",
},
email: {
required: "El email es obligatorio",
},
password: {
required: "La contraseña es obligatoria",
minlength: "Tu contraseña tiene que tener más de tres carácteres"
},
confirmarpassword: {
required: "Confirmar el password es obligatorio"
},
presentacion: {
required: "El texto de presentación es obligatorio",
minlength: "Tiene que a ver un mínimo de 15 carácteres"
}
},
submitHandler: function(form) {
form.submit();
}
});
}
}
$.validator.addMethod("esdnivalido", isdniValid, "El formato del DNI no es válido");
$.validator.addMethod("esformatopreciocorrecto", isdniValid, "El formato introducido no es válido");
function isdniValid(dni, element, param) {
//value es el valor actual del elemento que se está validando
//element es el elemento DOM que se está validando
//param son los parámetros especificados por el método
// p. ej. en el caso de minlength="3", param será 3
// en caso de que el método no tenga parámetros, param será true
var numero, let, letra;
var expresion_regular_dni = /^[XYZ]?\d{5,8}[A-Z]$/;
dni = dni.toUpperCase();
if(expresion_regular_dni.test(dni) === true){
numero = dni.substr(0,dni.length-1);
numero = numero.replace('X', 0);
numero = numero.replace('Y', 1);
numero = numero.replace('Z', 2);
let = dni.substr(dni.length-1, 1);
numero = numero % 23;
letra = 'TRWAGMYFPDXBNJZSQVHLCKET';
letra = letra.substring(numero, numero+1);
if (letra != let) {
//alert('Dni erroneo, la letra del NIF no se corresponde');
return false;
}else{
//alert('Dni correcto');
return true;
}
}else{
//alert('Dni erroneo, formato no válido');
return false;
}
}
$.validator.addMethod("anyDate",
function(value, element) {
return value.match(/^(0?[1-9]|[12][0-9]|3[0-1])[/., -](0?[1-9]|1[0-2])[/., -](19|20)?\d{2}$/);
},
"Por favor introduce la fecha en el formato DD/MM/YY o DD/MM/YYYY"
);
$.validator.addMethod("onlyletter",
function(value, element) {
return value.match(/[a-zA-Z]/);
},
"Sólo letras disponibles"
);
$.validator.addMethod("onlyphotos",
function(value, element) {
return value.match(/\.(jpg|png)$/i);
},
"El formato de archivo es incorrecto"
);
$.validator.addMethod("valemail",
function(value, element) {
return value.match(/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/);
},
"El formato del email es incorrecto"
);
//when the dom has loaded setup form validation rules
$(D).ready(function($) {
JQUERY4U.UTIL.setupFormValidation();
});