【发布时间】:2013-07-04 03:23:02
【问题描述】:
尝试创建一个复选框来检查树节点中的所有项目。我对 JSF 有点陌生,所以我很困惑如何在树而不是表上实现它。这是当前代码:
<rich:panel style="width:400px;">
<h:selectBooleanCheckbox id="vehicleAll" onclick="selectAllModel(this.checked);">
</h:selectBooleanCheckbox>
<h:outputText value=" ALL"/>
<rich:tree id="vehicleTree" switchType="client"
value="#{applicationScope.demoModelGrpList}" var="node" ajaxKeys="#{null}"
binding="#{demoRptController.vehicleUiTree}"
nodeSelectListener="#{demoRptController.selectionListener}"
changeExpandListener="#{demoRptController.expansionListener}"
ajaxSubmitSelection="true">
<rich:treeNode id="modelNode" ajaxSingle="true"
icon="/images/pixel_node.gif" iconLeaf="/images/pixel_node.gif">
<h:selectBooleanCheckbox id="cbxNode" value="#{node.selected}" style="position:relative; float:left; left:-22px;" class="vcBx">
</h:selectBooleanCheckbox>
<h:outputText value="#{node.name}" style="position:relative; float:left; left:-16px;"/>
</rich:treeNode>
</rich:tree>
</rich:panel>
脚本是:
<script type="text/javascript">
<![CDATA[
function selectAllModel(checks) {
alert("calling select all");
var array = document.getElementsByTagName("input");
for(var i = 0; i < array.length; i++)
{
if(array[i].type == "checkbox")
{
if(array[i].className == "vcBx")
{
array[i].checked = checks;
}
}
}
}
]]>
</script>
我把警报放在那里是为了测试;它甚至没有被调用。我很确定我的语法是正确的,所以这让我摸不着头脑。
【问题讨论】:
-
只需使用 jquery 或 javascript 即可。让树中的所有复选框都有 styleClass=foo,在主复选框的 onclick 上,调用一个 javascript 函数,该函数选择所有输入元素类型复选框 class=foo 以具有与主复选框相同的选中/取消选中值
-
在我的情况下似乎不起作用,尝试做类似的事情: var inputs = document.getElementsByTagName('input'); for (var i=0;i
-
这是一个使用 jquery 来选择复选框的简单问题,Stackoverflow 已经为此提供了很多答案,请研究。乍一看,这是一个很有希望的答案stackoverflow.com/questions/14925874/…
-
遗憾的是,我不能为此使用 jQuery,否则我可能早就解决了。我已经解决这个问题两天了,我似乎真的找不到只使用 java/javascript 的解决方案。它必须是一个树节点的事实确实使事情变得复杂,因为通常用于按类或 id 选择的方法似乎不起作用。由于树节点的性质,分配名称也会给我一个重复名称错误。
-
我发现了一个大问题;该函数根本没有被调用!我将用我的新脚本编辑我的原件。
标签: java jsf tree richfaces treenode