<h:selectOneMenu id="queueSelectMenu" styleClass="selectOneMenue-style"
tabindex="1" value="#{reworkQueueMB.queueType}" onselect="alert('2');" >
<f:selectItems value="#{queueMB.queueSelectItems}" />
</h:selectOneMenu>
当我选择selectmenu的项目时,我想获得select
事件,但它不起作用。
我不想使用change
事件,因为当我选择一个已经选中的项目时,change
事件将再次被触发。
答案 0 :(得分:1)
只有在文本输入字段(例如select
和<input>
)中选择(突出显示)文本时,才会触发HTML DOM <textarea>
事件。但<h:selectOneMenu>
呈现HTML <select>
元素,而不是<input>
元素。它不允许您在字段中选择文本。 select
事件在此处不执行任何操作。
从技术上讲,在每个click
元素上设置<option>
事件应该适合你。
<h:form id="formId">
<h:selectOneMenu id="menuId" value="#{reworkQueueMB.queueType}">
<f:selectItems value="#{queueMB.queueSelectItems}" />
</h:selectOneMenu>
<script>
$("[id='formId:menuId'] option").click(function() {
alert("2");
});
</script>
...
然而,这确实(不出所料)不在任何IE浏览器中工作,甚至不是IE9。
你最好的选择是change
事件。这是完全交叉浏览器。一个完全不同的替代方案是使用radiobutton组 - 它可以由<h:selectOneRadio>
呈现。 click
事件应该完全符合您的要求。
<h:selectOneRadio value="#{reworkQueueMB.queueType}" onclick="alert('2')">
<f:selectItems value="#{queueMB.queueSelectItems}" />
</h:selectOneRadio>