【问题标题】:How to detect which radio button was clicked in h:selectOneRadio using javascript or rich:jQuery?如何使用javascript或rich:jQuery检测在h:selectOneRadio中单击了哪个单选按钮?
【发布时间】:2011-12-07 09:59:04
【问题描述】:

如何使用 javascript 或 jquery 检测在 h:selectOneRadio 中单击了哪个单选按钮?

我已经可以使用托管 bean 中的 valueChangeListener 和 a4j:support 来做到这一点。 我想要的不是去服务器,只是为了性能而使用 jquery,因为有时 服务器响应返回之前需要一些时间。

我想要的是,当单击单选按钮时,它会禁用我的一些组件。

这里是代码。

<h:selectOneRadio id="isPrivate" valueChangeListener="#{someBean.changeRadio}">
                    <a4j:support event="onchange" reRender="sp" />            
                    <f:selectItem id="isPrivate0" itemLabel="No" itemValue="false"/>
                    <f:selectItem id="isPrivate1" itemLabel="Yes" itemValue="true"/>         
                </h:selectOneRadio>

提前致谢。 :)

【问题讨论】:

  • "我想要的是当一个单选按钮被点击时它会禁用我的一些组件。" - 我希望你很清楚,因为你想禁用它们仅在客户端(而不是在服务器 (JSF) 端),黑客仍然可以通过篡改请求轻松地向这些组件提交值。
  • 感谢您的回复。我想我会坚持我目前的实施。 ^^,

标签: jquery jsf-2 richfaces


【解决方案1】:

使用 jQuery:

jQuery('input[name=isPrivate]:checked').val()

示例:

if (jQuery('input[name=isPrivate]:checked').val() == "true") {
    //yes
}

【讨论】:

  • 谢谢。这很有帮助。:)
【解决方案2】:

最好将更改事件附加到文档加载列表中的每个单选按钮。

$(function()
{
    $('table[id$="isPrivate"] input:radio',this).each(function (){ 
                $(this).change(function (event) { 

                //do disabling here
                //$(this).val() - will return the value of radiobutton
                });
    }); 
});

【讨论】:

  • 感谢您的回复。我会试试这个..^^,
【解决方案3】:

您必须找到 JSF 生成的 &lt;input type='radio' …/&gt; 元素,并使用例如 jQuery 的 .change() 来监听 change 事件。

【讨论】:

  • 感谢您的回复。我会试试这个.. ^^,
猜你喜欢
  • 2014-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-15
  • 2017-03-28
  • 1970-01-01
  • 2014-10-13
相关资源
最近更新 更多