我继承了一个用旧 zul 编写的旧网站,必须为生日日期选择器添加新的datebox
组件。
添加了一个约束以接受给定日期之前的日期,但会从一开始就触发错误警报框,因为日期选择器上默认显示/选择的日期是今天。
我不想使用解决方法,但恕我直言,这似乎是我在 zk 的现实中寻找的顶级功能:
- zul的主要展示架确实包括一个生日日期盒,但非常蹩脚,因为它不包含任何年龄限制。
- 有 zk 小提琴手来展示之前约束的工作原理,但这恰恰证明了我的观点,即如果没有干净的设置方法,它至少不会为默认日期选择第一个正确的日期。
- 有论坛帖子提出了一种解决方法来设置默认年份,因此如果没有解决方法,Zk 很可能无法执行此操作。
- 2017 年有一个开放的 ZK Jira 问题可以解决这个问题,提出的解决方案与上点中提到的解决方法几乎相同 - 所以希望有点迷失,必须继续变通路线。
我确实尝试了该解决方法(在论坛帖子之后,因为它有默认年份),但解决方法对我不起作用。它确实执行
this.setValue(initialDate);
我看到该值已设置为日期框的 _pop/_value 和 _pop/_end 节点,但在日期选择器框上没有可见差异,今天仍然是预选的,尽管它是灰色的 - 所以没有效果。 尽管如此,当我尝试使用版本 6.5.8.1(现存最古老的引擎)时,它确实可以工作,但不能在本地使用 v5.0.11。
在此版本的错误列表中,没有提到日期框。试图调查一些可能干扰的错误,但事实证明这只是我浪费时间的另一集。
在 5.0.11 沙盒中尝试过,但不适用于该版本。我如何使用它的结构是在链接的小提琴手中模仿的。有关适用于此版本的解决方法的提示?
ZK 5.0.11 目前有点旧,因此它可能不会接受与更高版本完全相同的覆盖。如果我正确理解了这个问题,它归结为要么
1 - 在呈现日期框之前设置一个值,以便在日历中打开"初始日期"。
我会说这是最简单的方法,因为您可以在页面呈现期间使用撰写或数据绑定来设置日期框的值。下面是一个使用 databinding 和 zscript 的小示例,但相同的逻辑应该适用于使用 setValue() 的作曲家。您提到这不适用于本地 5.0.11。你能分享你为此使用的代码吗?小提琴中的示例代码我可以在本地 5.0.11 上运行它,并在弹出窗口打开之前设置日期。
或
2 - 设置初始日期(不影响所选值),但将成为打开的日历的目标。
这不是日期框的默认 ZK 5 行为。如果需要这种效果,则需要使用覆盖脚本对其进行自定义。在 ZK 5 中可以想到的最简单方法是使用日期框弹出窗口的 open 事件,这是它的外观示例(示例在单个页面中的脚本标记中打包,将使用全局 js 文件进行实际部署)示例在这里