【问题标题】:JSF DataTable Select One Row Using Radio ButtonJSF DataTable 使用单选按钮选择一行
【发布时间】:2011-02-02 06:30:35
【问题描述】:

我正在使用 JSF 1.1,并且我有一个 ice:datatable,其中包含从支持 bean 获取的行。 要选择要编辑的行,我有该行的单选按钮。 当我使用单选按钮选择行时,出现以下错误。

radio.name is undefined

在我的页面中,我按如下方式调用 javascript

<h:selectOneRadio styleClass="none" valueChangeListener="#{bean.setSelectedItem}"
                onclick="dataTableSelectOneRadio(this);">
                <f:selectItem itemValue="null" />
            </h:selectOneRadio>

任何我的 javascript 函数

function dataTableSelectOneRadio(radio) {
    var id = radio.name.substring(radio.name.lastIndexOf(':'));
    var el = radio.form.elements;
    for (var i = 0; i < el.length; i++) {
        if (el[i].name.substring(el[i].name.lastIndexOf(':')) == id) {
            el[i].checked = false;
        }
    }
    radio.checked = true;
}

我该如何解决这个错误?

谢谢

【问题讨论】:

    标签: jsf radio-button


    【解决方案1】:

    显然 IceFaces 不会为单选按钮生成name 属性,或者不会将onclick 放在生成的&lt;input type="radio"&gt; 元素上。尝试改用id。将 JavaScript 代码中的 radio.name 替换为 radio.id。如果无效,则需要检查生成的 HTML 输出(在浏览器中打开页面,右键单击并查看源代码)并相应地更改 JS 代码。

    【讨论】:

    • 嗨,我用 radio.id 替换了 radio.name。但是现在我收到一个错误 radio.form is undefined var elements = radio.form.elements;抱歉,当我查看 html 的源代码时,我什么也做不了。以下是我修改后的javascript。请您帮助解决我的错误。
    • 这是我的代码函数 dataTableSelectOneRadio(radio) { var id = radio.id.substring(radio.id.lastIndexOf(':')); var 元素 = radio.form.elements; for (var i = 0; i
    • 那么 IceFaces 根本没有将onclick 放在单选按钮上,而是放在其他一些元素上。抱歉,由于我不做 IceFaces,因此我无法为您提供更详细的帮助。您需要阅读生成的 HTML 输出并相应地更改 JS 代码。
    • 当我输入 alert('id '+id); 时,我可以看到 id 的值。所以这意味着 onclick 适用于单选按钮?
    • 它也可以是一个完全不同的 HTML 元素,它已经有一个 id。再次检查生成的 HTML 源代码并相应地更改 JS 代码。这本身不是 JSF 问题。 JavaScript 代码对 JSF 源代码一无所知。 JavaScript 唯一可以看到、访问和修改的是 HTML 代码。我不知道生成的 IceFaces 的 HTML 是什么样子的,所以我无法进一步详细说明。
    猜你喜欢
    • 2018-06-29
    • 2017-09-30
    • 2015-11-11
    • 1970-01-01
    • 2016-09-24
    • 2015-02-27
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多