0

我不知道这个毫无意义的东西是如何让我发疯的,好吧,我有以下几点:

我正在尝试在显示模式表单时设置单选按钮值,这是单选按钮的代码:

 <h:selectOneRadio layout="lineDirection" class="validate[required]" id="publico-form" value="#{lineasBean.publico}">
                        <f:selectItem id="y" itemLabel="SI" itemValue="Y"/> 
                        <f:selectItem id="n" itemLabel="NO" itemValue="n"/>
                    </h:selectOneRadio>  

渲染如下:

<table id="form-insertar-linea:publico-form" class="validate[required]">
<tr>
   <td>
    <input type="radio" name="form-insertar-linea:publico-form" id="form-insertar-linea:publico-form:0" value="Y" /><label for="form-insertar-linea:publico-form:0"> SI</label>       </td>
 <td>
   <input type="radio" name="form-insertar-linea:publico-form" id="form-insertar-linea:publico-form:1" value="n" /><label for="form-insertar-linea:publico-form:1"> NO</label> </td>
</tr>
 </table>

然后,使用 Javascript 函数,我尝试使用以下代码进行选择:

 $("input:radio[name='form-insertar-linea:publico-form']").attr('checked',true);

这完全有效,但仅适用于'NO'值,我想要的是根据我想要'Y'或'N'的值选择按钮值,我尝试使用select by id但jQuery无法识别模式“ :" 当我制作选择器时:

 $("#form-insertar-linea:publico-form:0").attr('checked',true);

我也尝试了基于 nth-child 的这个,但没有任何反应:

 $("input:radio[name='form-insertar-linea:publico-form']:nth-child(0)").attr('checked',true);

有任何想法吗?

问候!

4

1 回答 1

2

选择器input:radio[name='form-insertar-linea:publico-form']匹配您的两个单选按钮。所以(因为它们是互斥的)我并不惊讶在设置checked它们时,第二个获胜。

要专门针对第二个,您必须专门针对第二个。作者id

$("#form-insertar-linea\\:publico-form\\:0").attr('checked', true);

(请注意,我必须在选择器中的字符前面放一个反斜杠:,因为:它是 CSS 选择器中的一个特殊字符。反斜杠转义了字符[参见第二个要点]。因为我是在字符串文字中写的,要实际将反斜杠传递给选择器引擎,我必须在字符串中对其进行转义,以便 JavaScript 不会将其用作字符转义,因此需要两个反斜杠。)

或者按价值做:

// For Yes
$("input:radio[name='form-insertar-linea:publico-form'][value='Y'").attr('checked',true);

// Or for no
$("input:radio[name='form-insertar-linea:publico-form'][value='n'").attr('checked',true);

(我们不需要对 in 进行转义:,因为它已经在引号内;:在值字符串中并不特殊。)

于 2013-05-30T21:28:52.240 回答