【问题标题】:How to disable previous days in default DHTML calendar?如何在默认 DHTML 日历中禁用前几天?
【发布时间】:2012-12-16 12:50:04
【问题描述】:

如何在默认 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>

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

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

有什么想法吗?

【问题讨论】:

  • 您能提供指向您的日历库的链接吗?????
  • 能否指出如何在 DHTML 日历中获取完整日期?

标签: php javascript dhtml


【解决方案1】:

哇!

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

问候大家回复...

【讨论】:

    【解决方案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

    【讨论】:

      【解决方案3】:

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

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

      请参考以下,

      DHTML CALENDAR SETTINGS REFERENCE

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

      检查您的状况,

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

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

      【讨论】:

      • 但是(date.getDate() &lt;= now.getDate()) 不会给出truefalse 值吗?
      • 很有趣!代码似乎是正确的!但是如果我去上个月然后回来,我只能选择日期......!我编辑了问题....
      【解决方案4】:

      试试下面的代码

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

      【讨论】:

      • 不工作。当前 js-“(date.getTime()
      • 感谢您的尝试。但我的问题有点不同。首先,我需要禁用每个消失的日期。在您的代码中,仅禁用当前月份和年份中的日期。其次,如果启用了“今天”,我只能选择日期。可能是任何 javascript 错误。无论如何,我通过尝试一些嵌套的 if 循环来克服它。为您的时间 +1,尝试更正代码... :)
      • 您的代码会禁用每个月的过去日期,就像未来几个月的日期也会被禁用。
      猜你喜欢
      • 2020-04-15
      • 2013-04-25
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 2016-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多