如何使用zend with php禁用日历弹出窗口中的未来和过去日期

时间:2012-02-14 10:18:21

标签: php zend-framework

对于出生日期字段,我希望用户选择从当前日期开始15年后的过去日期并禁用所有其他日期

2 个答案:

答案 0 :(得分:1)

用户端的日历控制器使用Javascript工作,因为它需要用户友好。所以你必须从日历弹出窗口控制它。有很多javascript插件可用于此。 o禁用过去和将来的日期,你必须使用相关插件中给出的选项。

http://jqueryui.com/demos/datepicker/

http://javascriptcalendar.org/

但是,如果您需要对此进行服务器验证,则可以使用以下源代码。

http://framework.zend.com/manual/en/zend.date.basic.html

答案 1 :(得分:1)

您可以在我的PHP-Pike库中使用此类:https://github.com/php-pike/Pike/blob/master/Validate/DateRange.php

如果您在表单元素上使用它:

<?php
$form = new Zend_Form();
$element = Zend_Form_Element_Text('birthdate');
$element->setLabel('Some label');
$element->addValidator(new Pike_Validate_DateRange(array('lt' => Zend_Date::now()->subYear(15)));
$form->addElement($element);
?>

这是服务器端验证。您可以使用Prasad他的答案进行客户端验证。这两方面都很明智。

如果你使用Jquery-ui datepicker,那么使用Jquery maskedinput插件也是很好的,以便用户严格以某种格式填写日期。类似的东西:

$('your-date-field').mask('9999-99-99', {
    completed : function() {
        $('your-date-field').datepicker('hide');
    }
});

这将大大增加可用性:)