h:selectOneRadio 标记正确呈现单选按钮但是如果用户更改了选择,则前一个选择仍保留,即使选择改变了。 JS函数在第一列操作上正常工作 但是,如果我们在第二列中执行类似表头排序的Ajax操作,则会显示先前的选择(即)多个无线电选择。那么JavaScript基本上做的是隐藏所选的值还是我在这里遗漏了什么?代码如下。
<h:dataTable value="#{bean.items}" var="item">
<h:column>
<h:selectOneRadio valueChangeListener="#{bean.setSelectedItem}"
onclick="dataTableSelectOneRadio(this);">
<f:selectItem itemValue="null" />
</h:selectOneRadio>
</h:column>
<h:column>
// Consider this column has some data and sorting option by header
</h:column>
</h:dataTable>
Javascript功能:
function dataTableSelectOneRadio(radio) {
var radioId = radio.name.substring(radio.name.lastIndexOf(':'));
for (var i = 0; i < radio.form.elements.length; i++) {
var element = radio.form.elements[i];
if (element.name.substring(element.name.lastIndexOf(':')) == radioId) {
element.checked = false;
}
}
radio.checked = true;
}
所以问题实际上是我们在第二列上做了一些基于ajax的操作。如何克服这个?