2009-03-24 31 views
23

jQuery UI Datepickerを設定して特定の所定の日数を選択できないようにする方法はありますか?jQuery UI Datepicker - 特定の日を無効にする

私はthis approachを稼働させることができましたが、IEに表示されないようにnullエラーを生成します。

'natDays [...]。0' オブジェクト事前に

おかげnullであるか、ありません!

更新:いくつかのコードを含めると役立つでしょうか?とにかく、このスレッドのほとんどは上記のスレッドから直接取得されました:

natDays = [ 
     [7, 23], [7, 24], [8, 13], [8, 14], 
    ]; 

    function nationalDays(date) { 
     for (i = 0; i < natDays.length; i++) { 
      if (date.getMonth() == natDays[i][0] - 1 
      && date.getDate() == natDays[i][1]) { 
       return [false, natDays[i][2] + '_day']; 
      } 
     } 
     return [true, '']; 
    } 

    function noWeekendsOrHolidays(date) { 
     var noWeekend = $.datepicker.noWeekends(date); 
     if (noWeekend[0]) { 
      return nationalDays(date); 
     } else { 
      return noWeekend; 
     } 
    } 


    $(function() { 
     $("#datepicker").datepicker({ 
      inline: true, 
      minDate: new Date(2009, 6, 6), 
      maxDate: new Date(2009, 7, 14), 
      numberOfMonths: 2, 
      hideIfNoPrevNext: true, 
      beforeShowDay: $.datepicker.noWeekends, 
      altField: '#alternate', 
     }); 
    }); 

もう一度おねがいします!

+0

あなたは番目の生産のthatsを持っているもののあなたのコードを貼り付けることができeエラー – TStamper

+0

少なくとも問題の行のコードサンプルが必要です... – Tracker1

答えて

9

正に 'var'というキーワードでnatDaysを正しく宣言しようとしましたか?

また、natDays定義の末尾に余分なカンマがあります。

natDays [i]の[2]あなたの配列は、それらだけで2つの項目を持っているように動作しません - 「 - doesnの

また、あなたが正しくbeforeShowDay関数名を設定することをお勧めします」」だけしてみてくださいトンそれも

+0

うーん...ちょうどそれを試しました。運がない。これは、IEが返すエラーです: 'natDays [...]。0はnullまたはオブジェクトではありません – Sam

+0

私の最近の編集を参照してください...それは正しく定義されていません(余分なカンマ) –

+0

我々はどこかに行っている!余分なカンマはIE8で修正されました。あなたの2番目のコメントを意味するものを私に見せてもらえますか? (私はJSの初心者です...あなたが教えてくれますか?)ありがとう! – Sam

0
beforeShowDay: $.datepicker.noWeekends, 

カスタム関数を呼び出していることはここで

beforeShowDay: noWeekendsOrHolidays, 
14

になりますように見えることは、選択されることから特定の日付を無効にする方法です。

var unavailableDates = ["9-5-2011","14-5-2011","15-5-2011"]; 

function unavailable(date) { 
    dmy = date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear(); 
    if ($.inArray(dmy, unavailableDates) < 0) { 
    return [true,"","Book Now"]; 
    } else { 
    return [false,"","Booked Out"]; 
    } 
} 

$('#iDate').datepicker({ beforeShowDay: unavailable }); 

Source: jQuery - Datepicker - Disable Specific Dates

1

IEの問題点は、次の行に、おそらくです:

altField: '#alternate', 
}); 

は、コンマシンボルを削除するには、それが動作するはず試してみてください。

6

beforeShowDayオプションを使用できます。私は月の28日を過ぎた日を無効にする必要がありました。ここに私のコードです。ここで

$('.datepicker').datepicker({ 
    dateFormat: "yy-mm-dd", 
    beforeShowDay: function(date) { 
     var day = date.getDate(); 
     if (day > 28) { 
      return [false]; 
     } else { 
      return [true]; 
     } 
    } 
}); 

はそれについての詳細な情報は以下のとおりです。http://api.jqueryui.com/datepicker/#option-beforeShowDay

beforeShowDayコールバックに渡された日付変数は、JavaScriptの日付オブジェクトであるので、それはさまざまなライブラリを使用してフォーマットすることができ、タイムスタンプは日付を使用して取得することができます。 getTime()など

+0

show pickerの後にボタンをクリックしてから使用しますか? –

+0

@WHK申し訳ありませんが、私はあなたの質問を理解していません。 –

0
var unavailableDates = ["19-8-2014","14-9-2014"]; 

function unavailable(date) { 
    dmy = date.getDate() + "-" + (date.getMonth()+1) + "-" +date.getFullYear(); 
    if ($.inArray(dmy, unavailableDates) < 0) { 
    return [true,"","Book Now"]; 
    } else { 
    return [false,"","Booked Out"]; 
    } 
} 

$('#iDate').datepicker({ beforeShowDay: unavailable }); 

ライブデモ:http://jsfiddle.net/vfod0krm/

関連する問題