2012-09-29 12 views
7

Ich arbeite an einem Projekt auf Twitter Bootstrap mit einem Datepicker von https://github.com/eternicode/bootstrap-datepicker (das ist eine Gabelung aus einer anderen Version), aber es fehlt eine sehr wichtige Funktion, die ich brauche - wie man nur bestimmten Datumsbereich aktiviert (zB von den letzten 15 Tagen bis heute), so dass jedes andere Datum nicht einmal ausgewählt werden kann (nicht anklickbar).Twitter Bootstrap datepicker: wie man nur bestimmten Datumsbereich aktiviert

fand ich eine ähnliche Lösung hier auf SO, den Samstag und Sonntag deaktiviert: Limit bootstrap-datepicker to weekdays only? http://jsfiddle.net/katowulf/zNbUT/5/, aber ich weiß nicht, wie man einstellt es auf meine Bedürfnisse.

Vielen Dank im Voraus.

Antwort

14

Die ähnliche Frage, die Sie ganz einen Hack zu Ende verknüpft mit, aber was wollen Sie viel einfacher ist - Sie suchen die startDate und endDate Optionen:

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

Diese Optionen können Date Objekte, Timedelta-Strings (wie ich es hier gemacht habe), oder Datumszeichenfolgen, die dem gegebenen format folgen.

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

Stellen Sie außerdem sicher, dass Sie den Code aus GitHub verwenden - eyecon.ro Kopie der Original-Code, mit alten Fehlern und ohne die neueren Funktionen.

+0

Diese Lösung wurde bereits auf http://stackoverflow.com/questions/11933173/how-to-restrict-the-selectable-date-range-in-bootstrap-datepicker gefunden. Gibt es eine Option, eingeschränkte Tage "ausgegraut" zu machen, damit Benutzer sehen können, welche Daten ausgewählt werden können, bevor sie es versuchen? – jabbalesku

+0

Die deaktivierten Tage sollten bereits ausgegraut sein, wenn Sie die im Repo enthaltenen Stile verwenden. – 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

Nicht funktionieren. Versucht hier: http://jsfiddle.net/XSmx6/1/ – jabbalesku

+0

Sie müssen einen Handler einstellen und die Auswahl abbrechen, wenn sie außer Reichweite ist. –

+0

@jabbalesku Ich habe aktualisiert und hinzugefügt eine jsfiddle – Harry

Verwandte Themen