我不知道这种毫无意义的事情是如何使我发疯的,好吧,我有以下几点:
我试图在显示模式窗体时设置单选按钮值,这是单选按钮的代码:
<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'选择按钮值,我尝试用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);
有任何想法吗?
问候!
最佳答案
选择器input:radio[name='form-insertar-linea:publico-form']
匹配两个单选按钮。因此(由于它们是互斥的),我对设置checked
时第二个获胜并不感到惊讶。
要专门针对第二个,您必须专门针对第二个。通过id
:
$("#form-insertar-linea\\:publico-form\\:0").attr('checked', true);
(请注意,我必须在选择器中的
:
字符前加一个反斜杠,因为:
是CSS选择器中的特殊字符。反斜杠escapes the character [请参见第二个要点]。将其写为字符串文字,以实际将反斜杠传递给选择器引擎,我必须在字符串中对其进行转义,因此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);
(我们不需要在其中转义
:
,因为它已经在引号中了; :
在值字符串中并不特殊。)关于javascript - h:selectoneradio Javascript中未选择的项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16846125/