1

これは私のコーディングです:-

<script type="text/javascript">
var $cal = jQuery.noConflict();

$cal(function () {  
        var dateMin     = new Date();
        var weekDays    = AddWeekDays(4);
        dateMin.setDate(dateMin.getDate() + weekDays);
        var natDays = [
          [1, 1, 'uk'],
          [5,27,'uk'],
          /*[6,25,'uk'],
          [6,26,'uk'],
          [7,15,'uk'],
          [7,23,'uk'],
          [7,11,'uk'],*/
          [12, 25, 'uk'],
          [12, 26, 'uk']
        ];

        function noWeekendsOrHolidays(date) {
            var noWeekend = $cal.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, ''];
        }
        function AddWeekDays(weekDaysToAdd) {
            var daysToAdd   = 0
            var mydate      = new Date()
            var day         = mydate.getDay()
            weekDaysToAdd   = weekDaysToAdd - (5 - day)
            if ((5 - day) < weekDaysToAdd || weekDaysToAdd == 1) {
                daysToAdd   = (5 - day) + 2 + daysToAdd
            } else { // (5-day) >= weekDaysToAdd
                daysToAdd   = (5 - day) + daysToAdd
            }
            while (weekDaysToAdd != 0) {
                var week        = weekDaysToAdd - 5
                if (week > 0) {
                    daysToAdd   = 7 + daysToAdd
                    weekDaysToAdd = weekDaysToAdd - 5
                } else { // week < 0
                    daysToAdd   = (5 + week) + daysToAdd
                    weekDaysToAdd = weekDaysToAdd - (5 + week)
                }
            }

            return daysToAdd;
        }

        $cal('#required_ship_date').datepicker(
        {
            inline: true,
            beforeShowDay: noWeekendsOrHolidays,
            altField: '#required_ship_date',
            //showOn: "button",
            dateFormat: "mm/dd/yy",
           // firstDay: 1,
            changeFirstDay: false,
            minDate: dateMin,
            //buttonImageOnly: true,
           // buttonImage: "http://www.papercraftproducts.com/skin/frontend/default/default/images/grid-cal.gif",
        });
        $cal("#required_ship_date").datepicker("setDate", weekDays);
      });  
</script>
<li>
                <label for="custom[required_ship_date]"><?php echo $this->__('Required Ship Date (Optional)')?></label>
                <div class="input-box" >
                   <div id="datepicker"> </div>
                    <input type="text" value="" class="input-text input-text1" title="custom[required_ship_date]" name="custom[required_ship_date]" id="required_ship_date" autocomplete="off">
                </div>
           </li>

これが私のスクリーンショットです:- ここに画像の説明を入力

今日は 2013 年 6 月 13 日であり、4 日後には 2013 年 6 月 19 日になるとします。次に、テキストボックスに 19-6-2013 が表示され、カレンダーで最終日の前日、つまり 18-6-2013 を有効にする必要があります。私の場合、テキストボックスに 19-6-2013 が来ていますが、カレンダー表示では 18 が無効になっています:(

今日の日付が 14-6-2013 であると仮定すると、4 日後に 20-6-2013 がテキスト ボックスに表示され、カレンダーで 19-6-2013 が有効になります。

よろしくお願いしますここに画像の説明を入力

4

2 に答える 2

1

何をしようとしているのか完全には理解できませんでしたが、範囲を選択した日の 1 日前に開始したい場合は、計算された開始日を 1 だけ引いてください:

dateMin.setDate(dateMin.getDate() + weekDays-1);

ここに例があります

于 2013-06-13T07:04:53.233 に答える
0

このカレンダーで任意の日付を選択すると、必要に応じて完全に機能します。参照してください。私の回答を受け入れることを忘れないでください..:) これが私のコーディングです:-

<link type="text/css" rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/themes/base/jquery-ui.css" /><script type="text/javascript" src="http://www.papercraftproducts.com/skin/frontend/default/theme380/js/jquery-ui.js"></script> 
<script type="text/javascript">
var $cal = jQuery.noConflict();

$cal(function () {  
        var dateMin     = new Date();
        var weekDays    = AddWeekDays(5);
        var day         = dateMin.getDay()
        if(weekDays==9 && day==6)
        {
             dateMin.setDate(dateMin.getDate() + weekDays-12);
        }
        if(weekDays==7 && day==1)
        {
            dateMin.setDate(dateMin.getDate() + weekDays-3);
        }
        else
        {
            dateMin.setDate(dateMin.getDate() + weekDays-1);
        }

        var natDays = [
          [1, 1, 'uk']
        ];

        function noWeekendsOrHolidays(date) {
            var noWeekend = $cal.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, ''];
        }
        function AddWeekDays(weekDaysToAdd) {
            var daysToAdd   = 0
            var mydate      = new Date()
            var day         = mydate.getDay()
            weekDaysToAdd   = weekDaysToAdd - (5 - day)
            if ((5 - day) < weekDaysToAdd || weekDaysToAdd == 1) {
                daysToAdd   = (5 - day) + 2 + daysToAdd
            } else { // (5-day) >= weekDaysToAdd
                daysToAdd   = (5 - day) + daysToAdd
            }
            while (weekDaysToAdd != 0) {
                var week        = weekDaysToAdd - 5
                if (week > 0) {
                    daysToAdd   = 7 + daysToAdd
                    weekDaysToAdd = weekDaysToAdd - 5
                } else { // week < 0
                    daysToAdd   = (5 + week) + daysToAdd
                    weekDaysToAdd = weekDaysToAdd - (5 + week)
                }
            }
            return daysToAdd;
        }

        $cal('#required_ship_date').datepicker(
        {
            inline:         true,
            beforeShowDay:  noWeekendsOrHolidays,
            altField:       '#required_ship_date',
            //showOn: "button",
            dateFormat:     "mm/dd/yy",
           // firstDay: 1,
            changeFirstDay: false,
            minDate:        dateMin,

            //buttonImageOnly: true,
           // buttonImage: "http://www.papercraftproducts.com/skin/frontend/default/default/images/grid-cal.gif",
        });
        var mydate      = new Date();
        var day         = mydate.getDay();
        if(day==6)
        {
            $cal("#required_ship_date").datepicker("setDate", 6);
        }
        else if(day==2)
        {
            $cal("#required_ship_date").datepicker("setDate", 7);
        }
        else
        {
            $cal("#required_ship_date").datepicker("setDate", weekDays);
        }
      });   
</script>
 <li>
                <label for="custom[required_ship_date]"><?php echo $this->__('Required Ship Date (Optional)')?></label>
                <div class="input-box" >
                   <div id="datepicker"> </div>
                    <input type="text" value="" class="input-text input-text1" title="custom[required_ship_date]" name="custom[required_ship_date]" id="required_ship_date" autocomplete="off">
                </div>
           </li>

スクリーンショットは次のとおりです: - 今日の日付が 2013 年 6 月 13 日 (木曜日) の場合 ここに画像の説明を入力

今日の日付が 2013 年 6 月 14 日 (金曜日) の場合 ここに画像の説明を入力

于 2013-06-13T10:36:42.380 に答える