jQuery UI Datepicker - 禁用从数据库中选择的特定日期,而不是从数组中选择

时间:2012-03-12 11:50:48

标签: jquery-ui datepicker

提前感谢您的合作,

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

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

我的问题是: 如何在datepicker中禁用这些官方假期,因此我阻止用户选择这些特定日期。

点击此链接:

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
            });

2 个答案:

答案 0 :(得分:0)

以下是禁用所选日期的方法: 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解决方案?

答案 1 :(得分:0)

对于任何人的兴趣,以下是我使用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>
相关问题