【发布时间】:2014-11-13 17:24:02
【问题描述】:
我正在使用 Primefaces 5.0。我有一个带有 ajax 监听器的 selectOneMenu:
<p:selectOneMenu value="#{mybean.myselection}" >
<f:selectItems value="#{mybean.mylist}" />
<p:ajax listener="#{mybean.test}" />
</p:selectOneMenu>
每次更改值时都会调用侦听器。这工作正常。但我还需要一个像“选择”或“点击”这样的事件,当点击选定的项目时也会触发一个动作。
我在 PF UserGuide 中找不到事件。有没有简单的方法可以做到这一点?
编辑: 添加Javascript函数。
<h:form>
<p:selectOneMenu value="#{mybean.myselection}" widgetVar="mySelect">
<f:selectItems value="#{mybean.mylist}" />
<p:ajax listener="#{mybean.test}" />
</p:selectOneMenu>
<h:form>
<script>
//<![CDATA[
$(document)
.ready(
function() {
PF('mySelect').selectItem = function(item,
silent) {
var selectedOption = this.options.eq(this
.resolveItemIndex(item)), currentOption = this.options
.filter(':selected'), shouldChange = null;
if (this.cfg.editable) {
shouldChange = (selectedOption.text() != this.label
.val());
} else {
shouldChange = true;
}
if (shouldChange) {
this.highlightItem(item);
this.input.val(selectedOption.val())
this.triggerChange();
if (this.cfg.editable) {
this.customInput = false;
}
}
if (!silent) {
this.focusInput.focus();
}
if (this.panel.is(':visible')) {
this.hide();
}
}
})
//]]>
</script>
【问题讨论】:
标签: jquery ajax primefaces jquery-events selectonemenu