En supposant que vous utilisez le plugin Validate, vous pouvez écrire une règle personnalisée qui réimplémente la propre logique de ui.Datepicker pour décider quelles dates sont sélectionnables ou non. Je devais écrire aujourd'hui et pensé que quelqu'un d'autre pourrait bénéficier de savoir comment:
jQuery.validator.addMethod("vdate", function(value, element) {
// Datepicker's internal method for choosing selectable ported to a custom validator method.
// All criteria are the same, except othermonth is omitted.
var inst = $.data(element,'datepicker'); // instance data used internally by datepicker's functions
var printDate = $(element).datepicker("getDate");
var minDate = $.datepicker["_getMinMaxDate"](inst, 'min', true);
var maxDate = $.datepicker["_getMinMaxDate"](inst, 'max');
var beforeShowDay = $.datepicker["_optionDatepicker"](element,'beforeShowDay');
var daySettings = (beforeShowDay ? beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, '']);
var unselectable = (!daySettings[0] || (minDate !=null && (printDate < minDate)) || (maxDate !=null && (printDate > maxDate)));
return (this.optional(element) || !unselectable);
}, "Please choose a valid date");
Ce addMethod particulier a l'avantage de vérifier chaque zone individuellement, donc si vous avez plusieurs datepickers partage le nom de classe « vdate », mais peut-être ayant Différents paramètres minDate/maxDate/beforeShowDay, Validate vérifie et suit les propres règles de chaque client. En outre, si vous avez écrit une fonction compliquée pour beforeShowDay qui exclut les week-ends, les jours dont le nombre est premier, l'anniversaire de votre femme et le dernier jour de chaque mois, tant que cela fonctionne dans ui.Datepicker, Valider identifiez-les tous comme des dates non valides.
Non - Je ne pense pas qu'il a une touche lorsque datepicker n'est pas utilisé – Olav
Mec, la première phrase de votre question est: «J'utilise le jQueryUI Datepicker » Êtes-vous ou n'êtes-vous pas en utilisant le datepicker ? – Natrium
L'utilisateur peut ne pas l'utiliser. Comme il est commun, il est connecté au champ d'entrée, et je voudrais spécifier les dateranges valides, etc seulement une fois. – Olav