JQuery UI Datepicker Disbale第二天下午12点后 [英] JQuery UI Datepicker Disbale Next Day After 12pm

查看:133
本文介绍了JQuery UI Datepicker Disbale第二天下午12点后的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的电子商务网站上使用JQuery UI datepicker,以便客户可以选择交货日期。我已经设置了,所以周末是灰色的(不可选)。我也有一些假期变灰(如圣诞节)。除此之外,我还有以前的日期变灰,所以客户只能在未来选择日期。

I am using JQuery UI datepicker on my e-commerce site so that customers can select a delivery date. I have set it up so that weekends are greyed out (unselectable). I also have certain holidays greyed out (such as Christmas). As well as this I also have previous dates greyed out so customers can only select dates in the future.

通常客户可以选择明天作为交货日期,我想在晚上12点(中午)实施截止时间。如果现在是12点之后的时间,那么明天会变灰,但如果时间是晚上12点,那么他们可以选择明天。

Normally a customer can select 'tomorrow' as the date of delivery but I want to implement a cut off time of 12pm (noon). If the time is currently after 12pm then 'tomorrow' would be greyed out but if the time is before 12pm then they can select 'tomorrow'.

在英国可以使用,并在英国托管,所以我不需要担心国际时间的变化。

The site is on'y available in the UK and is hosted in the UK so I don't need to worry about international time changes.

我附上了我目前正在使用的代码。

I have attached the code I am currently using below.

<script>
    jQuery(document).ready(function($) {

        var delivery_city = jQuery('#delivery_date_block').find("#delivery_city"),
            delivery_date = jQuery("#delivery_date"),
            delivery_time = jQuery('#delivery_date_block').find("#delivery_time"),
            comment = jQuery("textarea[name='customer_comment']").eq(0,1);

        jQuery('#delivery_date_block').insertAfter(jQuery("textarea[name='customer_comment']"));

        var dateMin = new Date();
        var weekDays = AddWeekDays(1);

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

        var natDays = [
          [1, 1, 'uk'],
          [12, 25, 'uk'],
          [12, 26, 'uk']
        ];

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

        jQuery('#delivery_date').datepicker({
            beforeShowDay: noWeekendsOrHolidays,
            minDate: dateMin,
            defaultDate: +1,
            firstDay: 1,
            changeFirstDay: true,
            dateFormat: "dd-mm-yy",
            onSelect: function(dateText) {
                 jQuery.cookies.set('delivery_date',dateText);
             }
        });

        delivery_city.val( jQuery.cookies.get('delivery_city', "<?php echo $city_value?>") )
                    .bind('change',function(){jQuery.cookies.set('delivery_city',jQuery(this).val())});

        delivery_time.val( jQuery.cookies.get('delivery_time', "<?php echo $time_value?>") )
                    .change(function(){jQuery.cookies.set('delivery_time',jQuery(this).val())});

        jQuery("#delivery_date").datepicker( "setDate" ,jQuery.cookies.get('delivery_date', "<?php echo $date_value?>") );
    });
</script>


推荐答案

在脚本中编辑这行:

    var daysToAdd = 0
    var mydate = new Date()

将它们更改为:

    var mydate = new Date();
    if (mydate.getHours()>=12) var daysToAdd = 1;
    else var daysToAdd = 0;

,并强烈推荐您开始使用分号;

and strongly recomend you start using semicolons ;

示例

这篇关于JQuery UI Datepicker Disbale第二天下午12点后的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆