我正在使用Primefaces 5.0。我有一個selectOneMenu,裏面有ajax監聽器:選擇/點擊Primefaces selectOneMenu ajax事件
<p:selectOneMenu value="#{mybean.myselection}" >
<f:selectItems value="#{mybean.mylist}" />
<p:ajax listener="#{mybean.test}" />
</p:selectOneMenu>
每當值改變時都會調用監聽器。這工作正常。但是我還需要一個像「select」或「click」這樣的事件,當點擊選定的項目時也會觸發一個動作。
我在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>
對不起,延遲迴復。我添加了您的JavaScript,但它不起作用。你能給我一個提示嗎? – veote 2014-09-25 05:49:39
它沒有什麼意義?我的意思是你在控制檯中有任何錯誤?或者你沒有太多關於JavaScript的想法? – 2014-09-25 06:57:56
啊好吧我已經看到你的更新...如果你有任何錯誤,你會看看控制檯嗎? – 2014-09-25 07:02:22