2012-04-05 11 views
0

for文をfor文に組み込む試みを反映するためにコードを更新します。2番目のfor文を関数に追加

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]; 
} 

私は日付を無効にするには、日付ピッカーでbeforeShowDayでそれを使用できるように、以下のunavailableDays関数に日付の範囲で、この初期の変数を組み込むしようとしています。私は別の関数を作成しようとしましたが、beforeShowDateでは機能しませんでしたので、内部にある必要があると思います。

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

ブーリアンとして評価されるとき、 '[false]'と '[true]'は両方とも常に 'true'です。そこに配列を返します。 – Pointy

答えて

0

あなたは行動を継続させる前に、値の変数とテストにunavailableDays関数の戻りを置く必要があり、そのプログラムでは、先に進む前に終了する機能を待たなければなりません。

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

私はこれを今試しました、そして、それはdatepickerをunclickableにします。私は反対のブール値を試したが、どちらもうまくいかなかった。無効な日付に含まれる範囲を取得しようとすることにまだ取り組んでいます。何か案は? – amespower

+0

あなたはunavailableDays関数を単独で試してみましたか?それにdatePickerのものに取り込む前に、あなたが最初に望むものを与えていることを確認するための日付を与えましたか? – rncrtr

+0

はいunavailableDays関数が動作していて、datepickerの配列をうまく無効にしています。今私はsame.thxを行うために1978の範囲を追加したい – amespower

関連する問題