f:ajax不会因事件“改变”而被解雇

时间:2015-01-16 04:26:28

标签: ajax jsf datepicker jquery-multidatespicker

代码:

<h:inputText id="date" value="#{holidayRequestController.dates}">
                    <f:ajax execute="date" event="change"
                        listener="#{holidayRequestController.generateDates}"
                        render="generateDate" />
</h:inputText>
<h:panelGroup id="generateDate" class="span8"> ..</h:panelGroup>

使用此代码时,我使用日期选择器从h:inputText中选择日期,并且f:ajax将触发事件并将此日期填充到generateDate组件。 但是当我改为multiDatePicker时,f:ajax不会因事件“更改”而被触发(虽然它与事件“模糊”一起使用,但我使用“模糊”时有一些问题)。 如何使用multiDatePicker的事件“更改”? 另外一个问题:是否支持f:标签h的ajax:jsf中的inputHidden?

感谢您的支持

1 个答案:

答案 0 :(得分:0)

如果change事件实际上未被触发,则可能发生这种情况。如果输入元素的值仅通过JavaScript而不是通过最终用户交互来操作,则可能会发生这种情况。

基本上,当JavaScript通过element.value = newValue操纵值,并且您希望触发change事件时,JavaScript应该在被操作的输入元素上显式调用element.change()。 / p>

根据$.multiDatesPicker documentation,您可以使用onSelect选项在select上挂钩函数。在该功能中,您只需拨打element.change()即可。所以,给出如下输入:

<h:inputText ... styleClass="multi-dates" />

然后你可以按如下方式实现:

$(".multi-dates").multiDatesPicker({
    onSelect: function() {
        $(this).change();
    }
});