如何在wicket中隐藏/显示yui.calendar.DatePicker

时间:2011-10-28 11:34:35

标签: javascript datepicker wicket visibility

我遇到了一个问题,希望你们能帮助我。

我正在使用带有DatePicker的DateTextField(来自yui.calendar),它们都被添加到WebMarkupContainer中,并将OutputMarkupId和OutputMarkupPlaceholderTag设置为true。

我希望能够设置容器的可见性,但是当我将它从true设置为false到true时,日期选择器不再可见(我猜它与它有关,而不是在HTML(?))我必须重新加载整个页面(并松开输入数据)才能再次看到DatePicker。 DateTextField没有问题。有什么好方法可以解决这个问题吗?

JAVA:

invoiceDateFromField = new DateTextField("invoiceDateFromField", new PropertyModel(this, "invoiceDateFrom"), new PatternDateConverter("yyyy-MM-dd", true));
    invoiceDateFromField.setOutputMarkupPlaceholderTag(true);
    invoiceDateFromField.add(new DatePicker());
    containsAllContainer.add(invoiceDateFromField);

AjaxLink onClick:

containsAllContainer.setVisible(!containsAllContainer.isVisible());
target.add(containsAllContainer);//Edit

我尝试从invoiceDateFromField中删除DatePicker,然后在容器设置为visible时添加一个新的,但这似乎也不起作用。

谢谢!
欧莱

1 个答案:

答案 0 :(得分:1)

当您在Wicket中将它设置为visible = false时,YUI将失去与DOM元素的连接(因为该节点已从DOM中删除)。因此,当您将其添加回页面时,您的YUI日历实例不再在DOM中具有任何关联字段。每次使用Wicket重新渲染DateTextField时,您需要确保使用新的日历实例更新引用