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

时间:2013-01-02 05:24:13

标签: php javascript dhtml

如何禁用默认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 个答案:

答案 0 :(得分:3)

哇!

可能是一些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>

向所有人致以问候......

答案 1 :(得分:1)

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

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

    否则 {    this.currentDateEl = cell; }

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

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

答案 2 :(得分:0)

禁用功能应始终返回TRUE或FALSE。

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

请参阅以下内容,

DHTML CALENDAR SETTINGS REFERENCE

但是在你的代码中,disable函数没有返回任何内容...... :(因此它会进入js错误,并且在事件点击时无效。

检查你的病情,

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

检查上述情况后,根据您的要求返回true或false ......

答案 3 :(得分:0)

尝试以下代码

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