Juste avait une exigence pour cela; voici le code que j'ai utilisé. Appliquez-le à une entrée comme d'habitude, j'utilise la classe typeof__multidatepicker
.
Il gère une liste de dates uniques dans la zone de texte du propriétaire. Vous pouvez également taper là-dedans, ceci n'est pas validé - évidemment, le serveur doit vérifier la liste qui en résulte!
J'ai essayé de l'utiliser avec la zone de texte liée de datepicker mais j'ai échoué, donc cela crée une entrée invisible pour le datepicker (cela ne semble pas fonctionner avec display:none
, d'où le style impair).
Il est positionné sur l'entrée principale de sorte que le sélecteur de date s'affiche au bon endroit et qu'il ait une largeur de 1px, ce qui vous permet de toujours taper dans la zone de texte principale.
C'est pour un intranet avec une plate-forme fixe, donc je n'ai pas fait beaucoup de tests sur plusieurs navigateurs. N'oubliez pas d'inclure le gestionnaire sur le body
ou cela peut porter à confusion.
$('.typeof__multidatepicker').each(
function()
{
var _this = $(this);
var picker = $('<input tabindex="-1" style="position:absolute;opacity:0;width:1px" type="text"/>');
picker.insertAfter(this)
.position({my:'left top', at:'left top', of:this})
.datepicker({
beforeShow:
function()
{
_this.data('mdp-popped', true);
},
onClose:
function(dt, dpicker)
{
var date = $.datepicker.formatDate(picker.datepicker('option', 'dateFormat'), picker.datepicker('getDate'));
var hash = {};
var curr = _this.val() ? _this.val().split(/\s*,\s*/) : [];
var a = [];
$.each(curr,
function()
{
if(this != '' && !/^\s+$/.test(this))
{
a.push(this);
hash[this] = true;
}
}
);
if(date && !hash[date])
{
a.push(date);
_this.val(a.join(', '));
}
_this.data('mdp-popped', false);
_this.data('mdp-justclosed', true);
}
});
_this.on('focus',
function(e)
{
if(!_this.data('mdp-popped') && !_this.data('mdp-justclosed'))
_this.next().datepicker('show');
_this.data('mdp-justclosed', false);
}
);
}
);
$('body').on('click', function(e) { $('.typeof__multidatepicker').data('mdp-justclosed', false); });
Il y a un plugin utile @ http://www.filamentgroup.com/lab/date_range_picker_using_jquery_ui_16_and_jquery_ui_css_framework/ –
connexes: http://stackoverflow.com/ questions/903628/jquery-ui-datepicker-can-it-handle-multiple-dates –
merci :) c'est bon, mais pas multi-sélecteur de date – tarnfeld