appena avuto un requisito per questo; ecco il codice che ho usato. Applicalo normalmente a un input, sto usando la classe typeof__multidatepicker
.
Mantiene un elenco di date univoche nella casella di testo del proprietario. Puoi anche digitare lì, questo non è validato - ovviamente il server deve controllare l'elenco risultante!
Ho provato a farlo funzionare con la casella di testo collegata di datepicker ma non è riuscito, quindi crea un input invisibile per il datepicker (non sembra funzionare con display:none
, quindi lo stile dispari).
Si posiziona sull'ingresso principale in modo che il datepicker appaia nella posizione corretta e sia largo 1px in modo da poter digitare ancora nella casella di testo principale.
È per una intranet con una piattaforma fissa, quindi non ho eseguito molti test cross-browser.
Ricordare di includere l'handler su body
o funziona in modo confuso.
$('.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); });
C'è un plugin utile @ http://www.filamentgroup.com/lab/date_range_picker_using_jquery_ui_16_and_jquery_ui_css_framework/ –
correlati: http://stackoverflow.com/ domande/903628/jquery-ui-datepicker-can-it-handle-multiple-date –
grazie :) questo è buono, anche se non è multi data picker – tarnfeld