onselect for h:selectManyListbox不起作用

时间:2012-06-06 14:00:20

标签: javascript javascript-events jsf-2

我有以下代码:

<script type="text/javascript">
  //<![CDATA[ 
  function editSelected(selBox)
  {
    var htmlstring = selBox.options[selBox.selectedIndex].text;
    alert(htmlstring);
  }
  //]]>
</script>
...
<h:selectManyListbox
  id="titles"
  value="#{detailModel.selectedTitles}"
  size="5"
  disabled="#{detailModel.mode == detailModel.viewMode}"
  onselect="editSelected(document.getElementById('detailForm:titles'))">

  <f:selectItems
    value="#{detailModel.getCollectionAsSortableMetadataStringList(detailModel.afterObject.metadata.getTitles())}"
    var="title"
    itemLabel="#{title.value}"
    itemValue="#{title.position}"/>
</h:selectManyListbox>

使用“onselect”,当我点击选择的选项时,没有反应。 使用“onclick”,我有预期的行为(带有所选文本的fenster)。

我是否错过了什么或者我做错了什么?

2 个答案:

答案 0 :(得分:3)

这可能是JSF规范的疏忽。 select元素支持<{1}}事件 。另请参阅HTML DOM level 2 specification chapter 1.6.5

  

选择

     

当用户选择文本字段中的某些文本时,会发生选择事件。此事件对INPUT和TEXTAREA元素有效。

请注意,它没有提到SELECT元素。我已将其报告为spec issue 1113

答案 1 :(得分:1)

我认为onselect仅适用于h:inputTexth:inputTextarea,您可以在其中选择部分文字,例如复制/粘贴。

对于h:selectManyListboxonclick事件是正确的选择。