Comment puis-je spécifier un format de date personnalisé qui sera validé avec la fonction de validation de la date ? Plugin de validation pour jQuery ?
@blasteralfred : // put your own logic here, this is just a (crappy) example
Comment puis-je spécifier un format de date personnalisé qui sera validé avec la fonction de validation de la date ? Plugin de validation pour jQuery ?
Vous pouvez créer votre propre méthode de validation personnalisée à l'aide de la fonction addMethod
fonction. Supposons que vous vouliez valider "dd/mm/yyyy" :
$.validator.addMethod(
"australianDate",
function(value, element) {
// put your own logic here, this is just a (crappy) example
return value.match(/^\d\d?\/\d\d?\/\d\d\d\d$/);
},
"Please enter a date in the format dd/mm/yyyy."
);
Et ensuite sur votre formulaire ajouter :
$('#myForm')
.validate({
rules : {
myDate : {
australianDate : true
}
}
})
;
Pouvez-vous me suggérer une syntaxe qui valide le format requis DD-MM-YYYY ? Je suis un débutant en jquery :)
J'utilise personnellement le très bon http://www.datejs.com/ bibliothèque.
Ici Docco : http://code.google.com/p/datejs/wiki/APIDocumentation
Vous pouvez utiliser ce qui suit pour obtenir votre format australien et validera le jour bissextile 29/02/2012 et non 29/02/2011 :
jQuery.validator.addMethod("australianDate", function(value, element) {
return Date.parseExact(value, "d/M/yyyy");
});
$("#myForm").validate({
rules : {
birth_date : { australianDate : true }
}
});
J'utilise également le plugin d'entrée masquée pour standardiser les données. http://digitalbush.com/projects/masked-input-plugin/
$("#birth_date").mask("99/99/9999");
Voici un exemple d'une nouvelle méthode de validation qui permettra de valider presque tous les formats de date, notamment :
Ensuite, lorsque vous passez la valeur au php, vous pouvez la convertir avec strtotime
Voici comment ajouter la méthode :
$.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}$/);
},
"Please enter a date in the format!"
);
Ensuite, vous ajoutez le nouveau filtre avec :
$('#myForm')
.validate({
rules : {
field: {
anyDate: true
}
}
})
;
Voici un exemple de code spécifique qui a fonctionné pour moi récemment :
// Replace the builtin US date validation with UK date validation
$.validator.addMethod(
"date",
function ( value, element ) {
var bits = value.match( /([0-9]+)/gi ), str;
if ( ! bits )
return this.optional(element) || false;
str = bits[ 1 ] + '/' + bits[ 0 ] + '/' + bits[ 2 ];
return this.optional(element) || !/Invalid|NaN/.test(new Date( str ));
},
"Please enter a date in the format dd/mm/yyyy"
);
Je dois noter que cela remplace en fait la routine de validation de date intégrée, bien que je n'aie pas vu que cela puisse causer un problème avec le plugin actuel.
Je l'ai ensuite appliqué au formulaire en utilisant :
$( '#my_form input.date' ).rules( 'add', { date: true } );
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.