如何使用单选按钮在icefaces数据表中选择一行?
我尝试了以下
<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;
}
在另一篇文章中,我得到了一个答案,我应该用form.id替换form.name。然而,之后我收到错误
radio.form is undefined
var elements = radio.form.elements;
有人可以帮我解决这个问题。
我想使用单选按钮在icefaces数据表中选择一行。
任何帮助都非常值得赞赏。
由于
发布我生成的html源
这里看到的是单选按钮的
的jsf代码<h:selectOneRadio valueChangeListener="#{bean.setSelectedItem}"
id="reqselect" onclick="dataTableSelectOneRadio(this);">
<f:selectItem itemValue="null" />
</h:selectOneRadio>
我真诚地为在正确的html源代码发布道歉,我正在测试其他一些东西,因此错误的来源被发布了。粘贴在下面是我正确的html源代码,请查看是否可以找到一些东西。
答案 0 :(得分:2)
你应该使用ice:selectOneRadio和展开布局:
<ice:selectOneRadio id="myRadioId" layout="spread" ... />
<ice:dataTable ... >
<ice:column ...>
<ice:radio for="myRadioId" ... />
</ice:column>
...
</ice:dataTable>
答案 1 :(得分:0)
以下是每个单选按钮的生成HTML的外观:
<table id="crud:tab_cr:9:_id53" border="0" onkeypress="dataTableSelectOneRadio(this);">
<tr>
<td>
<input type="radio" name="crud:tab_cr:9:_id53" id="crud:tab_cr:9:_id53:_1" value="null" onkeypress="dataTableSelectOneRadio(this);Ice.util.radioCheckboxEnter(form,this,event);" />
<label for="crud:tab_cr:9:_id53:_1">null</label>
</td>
</tr>
</table>
因此,IceFaces显然在单选按钮周围呈现了一个完整的HTML表格,并将JS函数放在<table>
上。 JS函数显然根本不属于那里(除了onkeypress
不正确之外,它应该是onclick
)。
<h:selectOneRadio>
默认情况下不会渲染整个表格。这只能意味着您使用<ice:selectOneRadio>
实际,或者IceFaces替换了<h:selectOneRadio>
的标准渲染器。你需要在这个角落修复它。要么被<h:selectOneRadio>
替换,要么向IceFaces报告错误,他们的无线电渲染器也错误地将JS函数放在<table>
元素上。