【问题标题】:Set default date for zul datebox为 zul datebox 设置默认日期
【发布时间】:2019-07-18 12:08:10
【问题描述】:

我继承了一个用旧 zul 编写的旧网站,并且必须为生日日期选择器添加新的 datebox 组件。

已添加限制以接受给定日期之前的日期,但会从开始时触发错误警报框,因为日期选择器上默认显示/选择的日期是今天。

我不想使用解决方法,但恕我直言,这似乎是我在 zk 的现实中寻找的*功能:

我确实尝试了该解决方法(在论坛帖子之后,因为它具有默认年份),但该解决方法对我不起作用。它确实执行了

this.setValue(initialDate);

我看到该值已设置到日期框的 _pop/_value 和 _pop/_end 节点中,但在 datepicker 框中没有可见差异,今天仍然是预选的,尽管它是灰色的 - 所以没有效果。 尽管如此,当I try it in a fiddle with version 6.5.8.1 是现存最古老的引擎时,它确实可以工作,但在 v5.0.11 中不能在本地工作。

在此版本的buglist 中没有提及日期框。试图调查一些可能会干扰的错误,但事实证明这只是我在这方面浪费时间的又一集。

在 5.0.11 沙盒中尝试过,但不适用于该版本。我如何使用它的结构在链接的提琴手中被模仿。提示适用于此版本的解决方法?

【问题讨论】:

    标签: datebox zul


    【解决方案1】:

    ZK 5.0.11 目前有点老,所以它可能不接受与更高版本完全相同的覆盖。如果我正确理解了这个问题,它可以归结为

    1 - 在呈现 Datebox 之前设置一个值以在日历中打开一个“初始日期”。

    我想说这是最简单的方法,因为您可以在页面呈现期间使用组合或数据绑定来设置日期框的值。这是一个使用数据绑定和 zscripts 的小示例,但同样的逻辑应该适用于 composer 和 setValue()。您提到这在 5.0.11 本地不适用于您。您可以分享您为此使用的代码吗? Sample code here in fiddle 我可以在本地 5.0.11 上运行它,它设置了弹出窗口打开之前的日期。

    2 - 设置初始日期(不影响所选值),但将是打开日历的目标。

    这不是日期框的默认 ZK 5 行为。如果您想要这种效果,您需要使用覆盖脚本对其进行自定义。在 ZK 5 中可以想到的最简单的方法是使用日期框弹出窗口的打开事件,这是它的外观示例(例如,在单个页面中的脚本标签中打包,将使用全局 js 文件部署)example here

    【讨论】:

    • 在我的实现中,我通过 datebox._constraint.slice() 获取默认日期以获取“之前”部分之后的日期,然后将其切片为 yyyy-mm-dd js 格式日期解析器。