【问题标题】:jQuery UI Datepicker - Disable specific days selected from database not from arraysjQuery UI Datepicker - 禁用从数据库而不是数组中选择的特定日期
【发布时间】:2012-03-12 11:50:47
【问题描述】:

提前感谢您的合作,

我正在使用这个 JQUERY 日期选择器,如下图所示: http://techblog.willshouse.com/wp-content/uploads/2009/06/datepicker.jpg

以及更多信息: 我有一个从 SQL Server 2008 检索数据的 ASP.net 站点。 其中一项管理功能是更改法定假日日期并将其保存在数据库中的假期表中

我的问题是: 如何在日期选择器中禁用这些法定假日,所以我阻止用户选择这些特定日期。

点击此链接:

jQuery UI Datepicker - Disable specific days

但我恐怕不能使用这种解决方式,因为官方假期不能以数组的形式列出,因为它们会被网站管理员定期更改多次。

所以,我不需要每次管理员更改它们时都将它们添加到数组列表中。

我的意思是,有什么方法可以禁用数据库中“假期”表中选定的日期?

提前致谢,

---而且,我尝试使用这个答案......

    /* create an array of days which need to be disabled */

    var disabledDays = ["2-21-2010","2-24-2010","2-27-2010","2-28-2010","3-3-2010","3-17-2010","4-2-2010","4-3-2010","4-4-2010","4-5-2010"];

    /* utility functions */
    function nationalDays(date) {
            var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
            //console.log('Checking (raw): ' + m + '-' + d + '-' + y);
            for (i = 0; i < disabledDays.length; i++) {
                            if($.inArray((m+1) + '-' + d + '-' + y,disabledDays) != -1 || new Date() > date) {
                                            //console.log('bad:  ' + (m+1) + '-' + d + '-' + y + ' / ' + disabledDays[i]);
                                            return [false];
                            }
            }
            //console.log('good:  ' + (m+1) + '-' + d + '-' + y);
            return [true];
    }
    function noWeekendsOrHolidays(date) {
            var noWeekend = jQuery.datepicker.noWeekends(date);
            return noWeekend[0] ? nationalDays(date) : noWeekend;
     }

    /* create datepicker */
    jQuery(document).ready(function() {
            jQuery('#date').datepicker({
                            minDate: new Date(2010, 0, 1),
                            maxDate: new Date(2010, 5, 31),
                            dateFormat: 'DD, MM, d, yy',
                            constrainInput: true,
                            beforeShowDay: noWeekendsOrHolidays
            });

【问题讨论】:

  • 拜托,谁能紧急回答我的问题:|

标签: jquery-ui datepicker


【解决方案1】:

这是一种禁止选择特定日期的方法: jQuery - Datepicker - Disable Specific Dates 查看此链接中的数组,而不是:

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

你会有类似的东西:

<?php
    $result = mysql_query("SELECT `date` FROM `Holidays`;")
    foreach ($result as $holiday){
        //may need to format $holiday here before using
        $dates .= "'".$holiday."',";
    }
    //remove the last comma
    $dates = substr($dates,0,-1);
?>

var unavailableDates = [<?php echo $dates; ?>];

也许其他人可以提供 ASP.NET 解决方案?

【讨论】:

    【解决方案2】:

    出于任何人的兴趣,以下是我使用 ColdFusion 的方法

    <cfquery name="qHolidays" datasource="#ds#">
        SELECT holiday_date
        FROM public_hols
        ORDER BY holiday_date
    </cfquery>
    
    
    <cfset disabledDays = '"1-1-2000"'> 
    <cfloop query="qHolidays">
        <cfset disabledDays = disabledDays & ',"' & DateFormat(holiday_date,'d-m-yyyy') & '"'>
    </cfloop>
    
    <cfoutput>
        <script type="text/javascript">
            /* create an array of days which need to be disabled */
    
            var unavailableDates = [#disabledDays#];
            //var unavailableDates = ["9-5-2011","14-5-2011","15-5-2011"];
    
            function unavailable(date) {
                dmy = date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear();
                day = date.getDay();
                if ( $.inArray(dmy, unavailableDates) < 0 && (day > 0) && (day < 7) ) {
                    return [true,"","Work Day"];
                } else {
                    return [false,"","Public Holiday"];
                }
            }
    
            /*
            $('##iDate').datepicker({ beforeShowDay: unavailable });    
            */  
    
            jQuery(document).ready(function() {
                $(function() {
                    $('##dateentered').datepicker({
                        changeMonth: true,
                        changeYear: true,
                        dateFormat: 'yy-mm-dd',
                        showOn: "button",
                        buttonImage: "images/calendar.gif",
                        buttonImageOnly: true,
                        numberOfMonths: 3,
                        constrainInput: true,
                        beforeShowDay: unavailable
                    });
                });
            });
        </script>
    </cfoutput>
    

    【讨论】:

      猜你喜欢
      • 2012-04-02
      • 2010-10-15
      • 1970-01-01
      • 2018-05-28
      • 2011-12-04
      • 1970-01-01
      • 2011-03-27
      • 2014-11-05
      相关资源
      最近更新 更多