2012-04-05 3 views
0

Aktualisierung meines Codes, um meinen Versuch widerzuspiegeln, beide für Anweisungen zu integrieren.Hinzufügen einer Sekunde für die Anweisung zur Funktion

function unavailableDays(date) { 
//date array to be disabled 
var disabledDays = ["1963-3-31", "1965-9-18", "1965-9-19", 
"1965-10-2", "1965-10-3", "1965-10-9", "1965-10-10"]; 

var yy = date.getFullYear(), mm = date.getMonth(), dd = date.getDate(); 
for (i = 0; i < disabledDays.length; i++) { 
if($.inArray(yy + '-' + (mm+1) + '-' + dd,disabledDays) != -1 || new Date() < date) { 
return [false]; 
} 
} 
return [true]; 

//date range to be disabled 
var first = new Date("1978-8-10"); 
var last = new Date("1978-11-05"); 
var unavailableRange = []; 

var yy = date.getFullYear(), mm = date.getMonth(), dd = date.getDate(); 
for(j = first; j < last; j.setDate(j.getDate() + 7)){ 
if($.inArray(yy + '-' + (mm+1) + '-' + dd,unavailableRange) != -1 || new Date() < date) { 
return [false]; 
} 
} 
return [true]; 
} 

Ich versuche, mit Datumsbereich in die unavailableDays Funktion unter dieser ersten Variable zu übernehmen, so dass ich es in beforeShowDay in der Datumsauswahl Daten deaktivieren kann. Ich habe versucht, eine separate Funktion zu erstellen, aber das hat nicht für beforeShowDate funktioniert, also denke ich, dass es darin sein muss.

var first = new Date("1978-08-10"); 
var last = new Date("1978-11-05"); 
var dates = []; 

for (var i = first; i < last; i.setDate(i.getDate() + 7)) 
dates.push(new Date); 


var disabledDays = ["1963-2-17", "1963-2-24", "1963-3-3", "1963-3-10", "1963-3-17", "1963-3-24", "1963-3-31", "1965-9-18", "1965-9-19", "1965-10-2", "1965-10-3", "1965-10-9", "1965-10-10"]; 

function unavailableDays(date) { 
    var yy = date.getFullYear(), 
     mm = date.getMonth(), 
     dd = date.getDate(); 
    for (i = 0; i < disabledDays.length; i++) { 
     if ($.inArray(yy + '-' + (mm + 1) + '-' + dd, disabledDays) != -1 || new Date() < date) { 
      return [false]; 
     } 
    } 
    return [true]; 
} 

$(document).ready(function() { 
    $('.selector').datepicker({ 
     inline: true, 
     dateFormat: 'yy-mm-dd', 
     constrainInput: true, 
     changeYear: true, 
     changeMonth: true, 
     gotoCurrent: true, 
     minDate: new Date(1962, 1 - 1, 1), 
     //months are index-based(1-1) 
     maxDate: new Date(2011, 10 - 1, 24), 
     yearRange: '-60y', 
     beforeShowDay: unavailableDays, 
     onSelect: function (dateText, inst) { 
      $("#img").attr("src", "http://www.example.com" + dateText + ".jpg"); 

      var chosenDates = $.datepicker.parseDate('yy-mm-dd', dateText); 
      var backToString = $.datepicker.formatDate('MM dd' + ',' + ' yy', chosenDates); 
      $('.info').html('You are viewing:' + '<br />' + backToString); 
     } 
    }); 
+0

Sowohl '[false]' als auch '[true]' sind immer 'wahr', wenn sie als boolesche Werte ausgewertet werden. Du gibst dort Arrays zurück. – Pointy

Antwort

0

sollten Sie setzen die Rückkehr der unavailableDays Funktion in eine Variable und Test für den Wert lassen, bevor die Aktion fortsetzen, so programmatisch es warten muss für die Funktion, bevor sie zu beenden.

onSelect: function (dateText, inst) { 
var blackouts = unavailableDays(date); 
    if(blackouts==true){ 
     $("#img").attr("src", "http://www.example.com" + dateText + ".jpg"); 

     var chosenDates = $.datepicker.parseDate('yy-mm-dd', dateText); 
     var backToString = $.datepicker.formatDate('MM dd' + ',' + ' yy', chosenDates); 
     $('.info').html('You are viewing:' + '<br />' + backToString); 
    } 
} 
+0

Ich habe das gerade jetzt versucht und es macht den Datepicker unclickable. Ich habe den umgekehrten booleschen Code ausprobiert und es hat auch nicht funktioniert. Arbeitet noch an dem Versuch, den in den deaktivierten Daten enthaltenen Bereich zu erhalten. Irgendwelche Ideen? – amespower

+0

hast du die unavailableDays-Funktion alleine ausprobiert und ihr ein Datum gegeben, um sicher zu sein, dass es dir das gibt, was du zuerst willst, bevor du es in den datepicker-Kram integrierst? – rncrtr

+0

Ja, die Funktion unavailableDays funktioniert und deaktiviert das Array im Datapicker schön. Jetzt möchte ich den 1978 Bereich hinzufügen, um das selbe zu machen.thx – amespower

Verwandte Themen