2012-09-29 14 views
7

Sto lavorando ad alcuni progetti basati su Twitter Bootstrap che usano un datepicker da https://github.com/eternicode/bootstrap-datepicker (che è un fork da qualche altra versione), ma manca una caratteristica molto importante di cui ho bisogno - come abilitare solo un intervallo di date specifico (ad esempio da 15 giorni a oggi), quindi non è possibile selezionare alcuna data (non selezionabile).Twitter Bootstrap datepicker: come abilitare solo daterange specifico

ho trovato una soluzione simile qui su SO, che disabilita sabato e la domenica: Limit bootstrap-datepicker to weekdays only? http://jsfiddle.net/katowulf/zNbUT/5/, ma non so come regolare ai miei bisogni.

Grazie in anticipo.

risposta

14

La domanda simile si è collegato al finito per usare un bel hack, ma ciò che si vuole è molto più semplice - si sta cercando le opzioni startDate e endDate:

$('#dp1').datepicker({ 
    format: 'mm-dd-yyyy', 
    startDate: '-15d', 
    endDate: '+0d' // there's no convenient "right now" notation yet 
}); 

Queste opzioni possono assumere oggetti Date, stringhe timedelta (come ho fatto qui) o stringhe di data che seguono il dato format.

Demo: http://jsfiddle.net/zNbUT/131/

Inoltre, assicurarsi che si sta utilizzando il codice da GitHub - copia del eyecon.ro è il codice originale, con i vecchi bug e senza le nuove funzionalità.

+0

Ho già trovato questa soluzione su http://stackoverflow.com/questions/11933173/how-to-restrict-the-selectable-date-ranges-in-bootstrap-datepicker. C'è qualche opzione per rendere i giorni con restrizioni "in grigio", in modo che gli utenti possano vedere quali date possono selezionare prima che provino? – jabbalesku

+0

i giorni disattivati ​​dovrebbero essere già disattivati, se si utilizzano gli stili inclusi nel repository. – eternicode

3
var startDate = new Date(); 
startDate.setDate(startDate.getDate()-15); 

var endDate = new Date(); 

$('#dp1') 
.datepicker().on('changeDate', function(ev){ 
    if (ev.date.valueOf() > endDate.valueOf()){ 
     alert('The date selected is too far in the future.'); 
    } else if (ev.date.valueOf() < startDate.valueOf()){ 
     alert('The date selected is too far in the past'); 
    } else { 
     alert('fine') 
    } 

});

http://jsfiddle.net/XSmx6/14/

+0

Non funziona. Provato qui: http://jsfiddle.net/XSmx6/1/ – jabbalesku

+0

Devi impostare un gestore e annullare la selezione se è fuori portata. –

+0

@jabbalesku Ho aggiornato e aggiunto un jsfiddle – Harry

Problemi correlati