我对JS中的h:selectManyMenu组件有疑问。我的问题是,如果用户在他的h:selectManyMenu项目中添加了10个项目,而在可用项目列表中添加了3个项目,那么现在我想通过一些java脚本代码获取这3个所选项目的值。 有什么想法吗?
<h:selectManyMenu id="goodsList" style="height:65px;width:60px;"
value="#{itemsBean.attachedItems}" ondblclick="removeAttched(this);">
<f:selectItems value="#{itemsBean.goodsItemsList}" />
</h:selectManyMenu>
答案 0 :(得分:1)
如果您想调用javascript函数:
<f:selectItems value="#{itemsBean.goodsItemsList}" onclick="function(this)" />
该行的onclick="function(this)"
部分会将所选对象传递给该函数。
您还可以使用onblur()
,ondblclick()
,onchange()
,然后查看所有属性here
答案 1 :(得分:0)
我认为这里的关键部分是h:selectManyMenu
呈现一个普通的<select multiple="multiple" size="1">
HTML元素。只要这是客户端,您就可以使用普通的Javascript查询DOM元素。关于这方面的问题已被多次询问和回答,here是一个陈述:
$('#mySelect').val(); // Return an array of the selected options values
唯一值得注意的是,您的mySelect
ID是 clientId ,因此请包含您周围的表单ID:
<h:form id="testF">
<h:selectManyMenu id="goodsList" ondblclick="callMe()"
value="#{itemsBean.attachedItems}">
<f:selectItems value="#{itemsBean.goodsItemsList}" />
</h:selectManyMenu>
</h:form>
<h:outputScript target="body">
function callMe() {
var selected = $('#testF\\:goodsList').val();
selected.forEach(function(val) { console.debug(val); });
}
</h:outputScript>