如何使用javascript或jquery在Bootsfaces中获取SelectOneMenu值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (82)

我是JSF的新手,我想用javascript或jquery获取SelectOneMenu值来进行表单验证。

我尝试通常的方式得到它:

function apasa() {
   var a = $("#j_idt68Inner").val();
   alert(a);
}

但它返回null。这是JSF代码:

<b:column medium-screen="6">
  <b:selectOneMenu  colMd="2" required="true"  labelColMd="2" style="width:200px;margin-top: 30px;" >
    <f:selectItem itemLabel="Selecteaza raport" itemValue="" />
    <f:selectItem itemLabel="1.Neconcordante D394" itemValue="1" />
    <f:selectItem itemLabel="2.Neconcordante D112 REVISAL" itemValue="2" />     
  </b:selectOneMenu>
</b:column>

此组件采用某种形式。我想从itemValue获取数据。

提问于
用户回答回答于

一般建议:在使用JSF时忘记ID。而是使用伪CSS类。

答案很长:JSF使用完全合格的ID。好主意啊。它允许您对表中的每一行使用相同的id。在内部,JSF为这些ID添加了一个前缀,但表面上它隐藏了这一点。大多数情况下,这会为Java程序员提供一个简单的API。

如果你使用jQuery会出现问题。除其他外,完全限定的id包含至少一个冒号。你必须在每个jQuery选择器中转义它。另外,您需要知道完全限定的名称。

所以你要么熟悉id的组成方式。虽然这是一个很好的方法 - 对于ID的JSF方法既简单又聪明! - 我不推荐。通常情况下,使用伪CSS类更容易:

<b:selectOneMenu class="raport-selection" >
  <f:selectItem itemLabel="Selecteaza raport" itemValue="" />
  <f:selectItem itemLabel="1.Neconcordante D394" itemValue="1" />
  <f:selectItem itemLabel="2.Neconcordante D112 REVISAL" itemValue="2" />     
</b:selectOneMenu>

现在,您可以使用简单的jQuery选择器访问该值:

$(".raport-selection").val();

有两个“buts”:

  1. 如果您在表格或<ui:repeat>外观中多次使用选择框,则伪类方法将失败。在这种情况下,您最终会得到相同输入字段的多个副本,每个副本都带有相同的伪CSS类。

<b:selectOneMenu>有两种风格。如果激活select2=true选项,BootsFaces将生成完全不同的HTML代码。请查看https://select2.org/,了解select2风味的实现方式。

扫码关注云+社区

领取腾讯云代金券