Jsf 如何在两个p:SelectoneRadio中独占选择一个单选按钮
JSF2.0, Primefaces 3.1.1 我有两个p:selectOneRadio组件:Jsf 如何在两个p:SelectoneRadio中独占选择一个单选按钮,jsf,jsf-2,primefaces,radio-button,Jsf,Jsf 2,Primefaces,Radio Button,JSF2.0, Primefaces 3.1.1 我有两个p:selectOneRadio组件: <p:selectOneRadio id="radio1" value="#{inningBean.lastDeliveryType}"> <f:selectItem itemLabel="Wide" itemValue="1" /> <f:selectItem itemLabel="No Ball" itemValue="2"
<p:selectOneRadio id="radio1" value="#{inningBean.lastDeliveryType}">
<f:selectItem itemLabel="Wide" itemValue="1" />
<f:selectItem itemLabel="No Ball" itemValue="2" />
<f:selectItem itemLabel="Normal" itemValue="3" />
</p:selectOneRadio>
<p:selectOneRadio id="radio2" value="#{inningBean.lastDeliveryRunsScored}">
<f:selectItem itemLabel="1" itemValue="1" />
<f:selectItem itemLabel="2" itemValue="2" />
<f:selectItem itemLabel="3" itemValue="3" />
</p:selectOneRadio>
<p:commandButton />
我希望当用户单击按钮时,每个selectOneRadio中的第一个单选按钮都被选中(不向服务器提交请求)。就像用户自己在每个p:selectOneRadio中选择第一个单选按钮一样,我只想在javascript中执行此操作。使用jQuery可以轻松完成此操作。看看这些选择器:
id
请在表单上使用prependId=“false”
包装p:selectOneRadio
s
您不想重新加载页面,所以在p:commandButton
中使用ajax=“true”
<p:commandButton value="select" ajax="true" onclick="selectRadios()" update="@form"/>
整个代码如下所示:
<script type="text/javascript">
function selectRadios(){
jQuery('input[name=radio1]:first').prop('checked', true);
jQuery('input[name=radio2]:first').prop('checked', true);
};
</script>
<h:form id="formID" prependId="false">
<p:selectOneRadio id="radio1" value="#{testBean.radio1}">
<f:selectItem itemLabel="Wide" itemValue="1" />
<f:selectItem itemLabel="No Ball" itemValue="2" />
<f:selectItem itemLabel="Normal" itemValue="3" />
</p:selectOneRadio>
<p:selectOneRadio id="radio2" value="#{testBean.radio2}">
<f:selectItem itemLabel="1" itemValue="1" />
<f:selectItem itemLabel="2" itemValue="2" />
<f:selectItem itemLabel="3" itemValue="3" />
</p:selectOneRadio>
<p:commandButton value="select" ajax="true" onclick="selectRadios()" update="@form"/>
</h:form>
并使用此js
功能触发单击单选按钮
:
<p:commandButton type="button" value="Default select" id="selButtonId" onclick="selectRadios();" />
function selectRadios(){
jQuery('[for=radio1\\:0]').click();
jQuery('[for=radio2\\:0]').click();
};
单选按钮的ID
将用作标签
+:x,其中x是按钮
的实际订单号。(0为第一个)。
这是使用click()
函数的正确方法,因为您希望单击标签
,而不是按钮本身,解释
注意:Primefaces 3.1.1版与jQuery 1.6.x版捆绑在一起,jQuery 1.6.x版不支持按钮
元素(从1.8版开始支持)。否则,您可以使用:
function selectRadios(){
jQuery('input[name=radio1]:first').prop('checked', true).button("refresh");
jQuery('input[name=radio2]:first').prop('checked', true).button("refresh");
};
因此,我认为上面写的是你在你的处境中所能做的一切。我不知道是否有什么方法可以替代按钮
刷新
方法。如果我错了,肯定会有人纠正我的
关于我们需要为它编程。一种方法是。。从第一组中选择时,使用脚本将第二组项设置为false。另一种方法是。。。有另一组单选按钮来决定是否启用radio1组或radio2组进行输入。我不想向服务器提交更改所选电台的请求,无论是ajax还是普通电台request@djaqeel根据您的要求进行编辑。非常感谢您的回答。我会试试看,然后再打给你。请保持联系,你是JSF专家还是jQuery专家,或者两者兼而有之?我只是这两方面的一个热情的学生,希望能拿到我的BSc。两周后的标题:)
function selectRadios(){
jQuery('input[name=radio1]:first').prop('checked', true).button("refresh");
jQuery('input[name=radio2]:first').prop('checked', true).button("refresh");
};