Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 如何在两个p:SelectoneRadio中独占选择一个单选按钮_Jsf_Jsf 2_Primefaces_Radio Button - Fatal编程技术网

Jsf 如何在两个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"

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" />
        <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");
    };