我的代码如下:
<p:selectOneRadio value="#{myProgram1.selectedFlag}" id="radID">
<f:selectItems value="#{myProgram1.flags}"/>
</p:selectOneRadio>
<p:commandButton value="check" onclick="check()"/>
在我的bean类中,map标志如下:
`flags.put("1", "Apple");`
`flags.put("2", "Boy");`
我的目标是获取所选的单选按钮值,如果我选择1,那么我应该能够在check()javascript函数中获得Apple。我的代码在h:form id="fid"
之内。
我尝试过document.getElementById("fid:radID")[0].checked
和document.getElementById("fid:radID").value
。没有任何效果。 Plz帮助。
答案 0 :(得分:1)
<input type="radio" name="r" id="r" value="a">
通过jQuery你可以这样做
jQuery('#r').click(function(){
var abc = this.value;
alert(abc);
})
答案 1 :(得分:1)
如果使用widgetVar属性
,则会更容易<p:selectOneRadio value="#{myProgram1.selectedFlag}" id="radID" widgetVar="selectVar">
<f:selectItems value="#{myProgram1.flags}"/>
</p:selectOneRadio>
然后你可以使用变量来检查javascript中的值:
selectVar.inputs[0].checked
selectVar.inputs[1].checked
selectVar.inputs[2].checked
答案 2 :(得分:0)
如果您有一组具有相同名称的单选按钮,则可以通过迭代相同命名按钮的集合来获取值,例如
<form ...>
<input type="radio" name="foo" value="0" checked>0<br>
<input type="radio" name="foo" value="1">1<br>
<input type="radio" name="foo" value="2">2<br>
<input type="radio" name="foo" value="3">3<br>
<input type="button" value="show value" onclick="
var radios = this.form.foo;
for (var i=0, iLen=radios.length; i<iLen; i++) {
if (radios[i].checked) {
alert(radios[i].value);
}
}
">
<input type="reset">
</form>
答案 3 :(得分:0)
我建议您使用name而不是id,因为元素ID应该是唯一的。 我修改了你的代码,以便使用元素名来管理:
<p:selectOneRadio value="#{myProgram1.selectedFlag}" id="radID" name="programm[]">
<f:selectItems value="#{myProgram1.flags}"/> </p:selectOneRadio> <p:commandButton value="check" onclick="check()"/>
<script>
function check()
{
var arrElements=document.getElementsByName('programm[]');
$(arrElements).each(function(i,ele){
if($(ele).attr('checked'))
{
/*Your application logic comes here*/
/*To get Value of checked radio button use : ele.value */
}
});
}
</script>
答案 4 :(得分:0)
非常感谢你们的优质思想。我已经解决了。 document.getElementsByName(“fid:radID”)返回一个集合。通过迭代它我能够检查radiobutton值。
谢谢sarvesh。你的方法也运作良好。