我有以下代码:

<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”,我可以达到预期的行为(带有所选文本的窝)。

我会错过什么还是我做错了什么?

最佳答案

这可能是JSF规范中的疏忽。 select事件不受<select>元素支持。另见HTML DOM level 2 specification chapter 1.6.5


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


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

10-04 10:46