0

编码:

<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 不会用事件“change”触发(虽然它适用于事件“blur”,但我在使用“blur”时遇到了一些问题)。 我应该怎么做才能为 multiDatePicker 使用事件“更改”? 另一个问题:jsf 中的标签 h:inputHidden 是否支持 f:ajax?

感谢您的支持

4

1 回答 1

1

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

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

根据$.multiDatesPicker文档,您可以使用该onSelect选项在 select 上挂钩函数。在该函数中,您可以调用element.change(). 因此,给定如下输入:

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

那么您可以按如下方式实现它:

$(".multi-dates").multiDatesPicker({
    onSelect: function() {
        $(this).change();
    }
});
于 2015-01-16T18:54:02.040 回答