0

我知道已经有一些关于此的主题,但我认为我有正确的概念只是某个地方的缺陷。我需要一个 if 语句来确定是否选中了 radioButton。下面是我的代码。

if($j("input:radio[name=selector1]").is(":checked")){
   //do something here
}


<p:selectOneRadio id="radioButtonsId" widgetVar="rb1">

    <f:selectItem id="selector1" itemLabel="Yes" itemValue="true"/>
    <f:selectItem id="selector2" itemLabel="No" itemValue="false"/>

</p:selectOneRadio>

我想知道 if 块中的名称是否错误。我在使用 primeFaces 和 jQuery 时也遇到了很多问题。

4

1 回答 1

1

这不起作用的原因是因为 selector input:radio[name=selector1]。id selector1不会是输入标签的id名称。单选按钮组的输入标签的ID名称将遵循命名约定:

身份证formId:selectOneRadioId:indexOfTagInGroup

名称formId:selectOneRadioId

因此,在您的情况下,selector1的名称将是someGeneratedJSFId:radioButtonsIdid将是someGeneratedJSFId:radioButtonsId:0. 为了选择这个特定元素,您可以使用:

 $("input:radio[id*=radioButtonsId\\:0]")
  • id*=选择具有包含您指定的字符串的id的单选按钮
  • \\是元字符的转义字符,例如:
  • 0选择单选按钮组中的第一个输入标签

因此,请尝试以下操作:

 if($("input:radio[id*=radioButtonsId\\:0]").is(":checked")){
    //do something here
 }

<p:selectOneRadio id="radioButtonsId" widgetVar="rb1">
     <f:selectItem id="selector1" itemLabel="Yes" itemValue="true"/>
     <f:selectItem id="selector2" itemLabel="No" itemValue="false"/>
</p:selectOneRadio>
于 2012-09-25T18:11:22.033 回答