如果检查语句j​​query primefaces

时间:2012-09-25 14:37:00

标签: jquery if-statement primefaces radio-button

我知道这方面已有一些话题,但我认为我有正确的概念只是一个缺陷。我需要一个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上也遇到了很多问题。

1 个答案:

答案 0 :(得分:1)

这不起作用的原因是因为选择器input:radio[name=selector1]。 id selector1 不是 id ,也不是输入标记的 name 。单选按钮组的输入标记的 id name 将遵循命名约定:

id formId:selectOneRadioId:indexOfTagInGroup

名称formId:selectOneRadioId

因此,在您的情况下, selector1 的名称将为someGeneratedJSFId:radioButtonsId,而 id 将为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>