f:ajax 不触发事件 "change"
f:ajax don't fired with event "change"
代码:
<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>
使用此代码,当我使用日期选择器 select 来自 h:inputText 的日期时,f:ajax 将触发事件并将此日期填充到 generateDate 组件。
但是当我更改为 multiDatePicker 时,f:ajax 不会触发事件 "change"(尽管它可以与事件 "blur" 一起使用,但我在使用 "blur" 时遇到了一些问题)。
我应该如何为 multiDatePicker 使用事件 "change"?
另一个问题:在 jsf 中是否支持 f:ajax 标签 h:inputHidden?
感谢支持
如果 change
事件实际上没有触发,就会发生这种情况。如果仅通过 JavaScript 而不是通过最终用户交互操作输入元素的值,则可能会发生这种情况。
基本上,当 JavaScript 通过 element.value = newValue
操作值时,并且您希望触发 change
事件,那么 JavaScript 应该显式调用 element.change()
在被操作的输入元素上。
根据 $.multiDatesPicker
documentation,您可以使用 onSelect
选项挂钩 select 上的函数。在该函数中,您可以调用 element.change()
。因此,给定如下输入:
<h:inputText ... styleClass="multi-dates" />
那么你可以实现如下:
$(".multi-dates").multiDatesPicker({
onSelect: function() {
$(this).change();
}
});
代码:
<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>
使用此代码,当我使用日期选择器 select 来自 h:inputText 的日期时,f:ajax 将触发事件并将此日期填充到 generateDate 组件。 但是当我更改为 multiDatePicker 时,f:ajax 不会触发事件 "change"(尽管它可以与事件 "blur" 一起使用,但我在使用 "blur" 时遇到了一些问题)。 我应该如何为 multiDatePicker 使用事件 "change"? 另一个问题:在 jsf 中是否支持 f:ajax 标签 h:inputHidden?
感谢支持
如果 change
事件实际上没有触发,就会发生这种情况。如果仅通过 JavaScript 而不是通过最终用户交互操作输入元素的值,则可能会发生这种情况。
基本上,当 JavaScript 通过 element.value = newValue
操作值时,并且您希望触发 change
事件,那么 JavaScript 应该显式调用 element.change()
在被操作的输入元素上。
根据 $.multiDatesPicker
documentation,您可以使用 onSelect
选项挂钩 select 上的函数。在该函数中,您可以调用 element.change()
。因此,给定如下输入:
<h:inputText ... styleClass="multi-dates" />
那么你可以实现如下:
$(".multi-dates").multiDatesPicker({
onSelect: function() {
$(this).change();
}
});