这个问题在这里已有答案:
我是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();
有两个“位”:
<ui:repeat>
外观中多次使用选择框,则伪类方法将失败。在这种情况下,您最终会得到相同输入字段的多个副本,每个副本都带有相同的伪CSS类。<b:selectOneMenu>
。如果激活select2=true
选项,BootsFaces会生成完全不同的HTML代码。请查看https://select2.org/,看看select2
风味是如何实现的。