1

我有以下代码:

<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我的预期行为(带有所选文本的围栏)。

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

4

2 回答 2

3

这可能是 JSF 规范中的疏忽。元素支持该select事件。另见HTML DOM 2 级规范第 1.6.5 章<select>

选择

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

请注意,它没有提到 SELECT 元素。我已将其报告为规范问题 1113

于 2012-06-06T14:41:16.960 回答
1

我认为这些onselect作品仅适用于h:inputTexth:inputTextarea您可以选择部分文本的位置,例如用于复制/粘贴。

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

于 2012-06-06T14:12:59.590 回答