0

我想在组件 adsmanger 的搜索模块中自定义 Joomla 的日历字段,基本上我想要:

  • 防止用户选择今天之前的日期。
  • 防止用户在字段中输入,他只能使用日历选择日期。
  • 将当前日期设置为默认值

这是组件中日历字段生成的一部分:

<?php
case 'date':

            $options = array();
            $options['size'] = 16;
            $options['maxlength'] = 16;
            if ($field->required == 1) {
                $options['class'] = 'adsmanager_required';
                $options['mosReq'] = '1';
                $options['mosLabel'] = "$strtitle";
            }
            else 
            {
                $options['class'] = 'adsmanager';
            }
            $return .= JHTML::_('behavior.calendar');
            if ($value != "") {
                if (function_exists("strptime")) {
                    $a = strptime($value, JText::_('ADSMANAGER_DATE_FORMAT_LC'));
                    $timestamp = mktime(0, 0, 0, $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900);
                } else {
                    $timestamp = strtotime($value);
                }
                if ($timestamp != null)
                    $value = date("Y-m-d",$timestamp);
                else
                    $value = "";
            }
            $return .=  JHTML::_('calendar', $value, "$field->name", "$field->name", JText::_('ADSMANAGER_DATE_FORMAT_LC'), $options); ?>
4

1 回答 1

0

日历实际上并没有办法完全按照您开箱即用的方式进行操作。不过,有一些方法可以让你更接近。

包含的方法是设置可用年份,至少可以将它们保留在今年。

Calendar.setRange(2013, 2020);

javascript 函数中还有一种方法可以添加一个onUpdate处理程序,您可以使用该处理程序编写自己的比较函数,以将日期限制为今天和以后。但是,在 Joomla 中似乎没有一个好方法可以将函数传递到这个位置,因为它应该是Calendar.setup()调用的一部分。生成 javascript 的代码libraries/joomla/html/html.php位于第 880 行。

于 2013-02-12T20:35:16.917 回答