1

如何在默认 DHTML 日历中禁用前几天?

我使用了以下代码,

<script type="text/javascript">
 Calendar.setup({
        inputField : '_dob',
        ifFormat : '%m/%e/%y',
        button : '_dob_trig',
        align : 'Bl',
        singleClick : true,
      disableFunc: function(date) {
          var now= new Date();
        return (date.getTime() < now.getTime());
    }
    });
</script>

它可以禁用以前的日期。但是当我们选择有效日期时,什么也没有发生。日期未添加到日历的文本字段中。

如果我更改月份并返回,我可以选择日期!

任何想法?

4

4 回答 4

4

哇!

可能是一些 javascript 错误。我无法选择任何日期,除非从下个月开始回来......

我通过给出一些 if 循环来通过它。我的更新代码如下。

<script type="text/javascript">
 Calendar.setup({
        inputField : '_dob',
        ifFormat : '%m/%e/%y',
        button : '_dob_trig',
        align : 'Bl',
        singleClick : true,
        disableFunc: function(date) {
          var now= new Date();
        if(date.getFullYear()<now.getFullYear())
        {
            return true;
        }
        if(date.getFullYear()==now.getFullYear())
        {
            if(date.getMonth()<now.getMonth())
            {
                return true;
            }
        }
        if(date.getMonth()==now.getMonth())
        {
            if(date.getDate()<now.getDate())
            {
                return true;
            }
        }
    },
    });
</script>

大家好,回复了。。。

于 2013-01-02T10:02:19.083 回答
2

我也遇到了同样的问题,调试之后,问题似乎是日历无法判断当前日历日期应该是什么(因为它被disableFunc回调函数禁用了)。您有两种选择。

  1. 确保 disableFunc 函数为当前日期返回 false。这样它就不会在日历中被禁用,并且会正常运行。
  2. 您可以在 calendar.js 中的 if (!cell.disabled) 行之后添加以下行。(这恰好是我的文件版本中的第 1183 行 - v 1.51)

    否则 { this.currentDateEl = 单元格;}

第二个选项也允许您禁用当前日期。

对于那些想知道这个 DHTML 日历是什么的人,这里是它的文档的链接:http ://www.dni.ru/js/doc/html/reference.html

于 2015-01-21T17:36:32.953 回答
1

试试下面的代码

 Calendar.setup({
            inputField : '_dob',
            ifFormat : '%m/%e/%y',
            button : '_dob_trig',
            align : 'Bl',
            singleClick : true,
            dateStatusFunc :    function (date) { 
                var now= new Date();
                return (date.getDate() <= now.getDate());
            }
        });
于 2013-01-02T06:54:57.980 回答
1

禁用函数应始终返回 TRUE 或 FALSE。

disableFunc 函数:接收 JS Date 对象的函数。如果必须禁用该日期,它应该返回 true,否则返回 false。已弃用(见下文)。

请参考以下内容,

DHTML 日历设置参考

但是在你的代码中,禁用函数什么都不返回...... :(所以它进入 js 错误并且在事件点击时没有任何作用......

检查您的状况,

return (date.getDate() <= now.getDate());

检查上述条件后,根据您的要求返回真或假...

于 2013-01-02T05:49:47.107 回答