1

フォームの検証を作成しようとしています。日時ピッカーで週末と休日を無効にする方法について調べてきました。Trentrichardson http://trentrichardson.com/examples/timepicker/のこの Jquery スクリプトを使用しています。

私はJSの初心者で、このコードを機能させる方法が見つからないため、髪を引き抜こうとしています:

$(document).ready(function(){
    $('.timepicker').datetimepicker({ beforeShowDay: $.datepicker.noWeekends });

    var natDays = [
    [2, 26, 'ph'], [2, 6, 'ph'], [2, 17, 'ph']
    ];

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

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


});

昨日、このコードを見つけましたが、これは正しい答えです ( jQuery UI Datepicker で土日 (および休日) を無効にすることはできますか? ) ですが、動作させることができません。休日は表示されませんが、週末は無効になっています(稼働中)。

何か案は?

4

1 に答える 1

0

日付が土曜日か日曜日かを確認するには、別の関数は必要ありません。

if (date.getDay() % 6) {
  // date is not a weekend
} else {
  // date is a weekend
}

祝日の確認も簡単です (日付は年ごと、場所ごとに変わるため、これは非常に難しい場合があります)。設定された形式(ISO8601が便利です)で日付のリストを作成すると、現在の日付に対してテストできます:

// You may have a function like this already
// d is a javascript Date object
function dateToISO(d) {
  function z(n){return (n<10? '0':'')+n}
  return d.getFullYear() + '-' +
         z(d.getMonth() + 1) + '-' + 
         z(d.getDate());
}

// s is a date string in ISO8601 format
function isPublicHoliday(s) {
  var holidays = '2012-12-25 2012-12-26'; // list holidays
  var m = holidays.match(s);
  return !!(m && m.length);
}

isPublicHoliday(dateToISO(date));  // true for 2012-12-25

もちろん、上記を別の方法で実装したいと思うでしょうが、それはあなたにその要点を与えます。おそらく、日付ピッカーは日付オブジェクト、またはテスト可能な書式設定された文字列を返します。文字列に対するテストは非常に高速で、配列や関数の手間が大幅に省けます。日付は非常に人間が判読できるので、保守も非常に簡単です。

于 2013-02-18T03:30:59.647 に答える