在表单中有一个开始日期元素和一个结束日期元素。每个都是使用日期选择器选择的。我想让我的表单自动将结束日期元素设置为选择开始日期的第二天(因此,例如,如果我选择2013年7月10日,结束日期字段中的值应该默认为2013年7月11日)。从那时起,用户可以随意设定结束日期,但最初的结束日期应该是第二天。
下面是我的代码的形式: // Element: start_date
$start_date = new Zend_Form_Element_Text('start_date',
array(
'label' => 'Start date',
'required' => false,
'filters' => array('StringTrim', 'StripTags'),
'class' => 'input-small datepicker',
'decorators' => $customElementDecorators,
'data-date' => date("Y-m-d"),
'data-date-format' => 'yyyy-mm-dd',
'value' => date("Y-m-d")
)
);
// date validator
$start_date->addValidator(new Zend_Validate_Date('Y-m-d'));
$this->addElement($start_date);
unset($start_date);
// Element: end_date
$end_date = new Zend_Form_Element_Text('end_date',
array(
'label' => 'End date',
'required' => false,
'filters' => array('StringTrim', 'StripTags'),
'class' => 'input-small datepicker',
'decorators' => $customElementDecorators,
'data-date' => date("Y-m-d"),
'data-date-format' => 'yyyy-mm-dd',
'value' => date("Y-m-d")
)
);
$this->addElement($end_date);
unset($end_date);
你绝对需要使用Javascript(或Jquery…有一个很好的插件:http://trentrichardson.com/examples/timepicker/)执行这样的动作在"实时"。另一种解决方案是在Post操作之后检查日期,并显示自定义的错误信息。
设置end的data-date属性时,将其值赋给date("Y-m-d", strtotime("+1 day"));
$end_date = new Zend_Form_Element_Text('end_date',
array(
'label' => 'End date',
'required' => false,
'filters' => array('StringTrim', 'StripTags'),
'class' => 'input-small datepicker',
'decorators' => $customElementDecorators,
'data-date' => date("Y-m-d", strtotime("+1 day")),
'data-date-format' => 'yyyy-mm-dd',
'value' => date("Y-m-d")
)
);