如何从h获取价值:selectManyMenu

时间:2014-05-30 11:47:06

标签: javascript jsf richfaces

我对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>&nbsp;

2 个答案:

答案 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>