我的页面中有这个asp:复选框,在某些条件下,我想隐藏它。我试图通过设置style.display ='none'来在JavaScript函数中完成它。但不知何故,asp:checkbox被渲染为两个html控件,输入和标签。输入消失了,但标签仍然存在。如何在JavaScript中正确隐藏asp:复选框呢?以下是我的代码:
var checkBox= document.getElementById('ctl00_ContentPlaceHolder1_checkBox');
if (...)
{
checkBox.style.display='none';
}
以下
<td>
<asp:CheckBox ID="checkBox" runat="server" Text="Test" onclick="..."/></td>
将呈现为
<td><span disabled="disabled"><input id="ctl00_ContentPlaceHolder1_checkBox" type="checkbox" name="ctl00$ContentPlaceHolder1$checkBox" disabled="disabled" onclick="...;" /><label for="ctl00_ContentPlaceHolder1_checkBox">Test</label></span></td>
答案 0 :(得分:1)
正如MikeSmithDev所说 - 你也需要隐藏你的标签。在您的代码中,您可以添加以下内容:
var checkBoxLabel = document.querySelectorAll('label[for=ctl00_ContentPlaceHolder1_checkBox]');
if (checkBoxLabel.length > 0) checkBoxLabel[0].style.display='none';
它通过for
属性找到标签,如果存在,则隐藏它。
甚至更容易 - 假设标签始终遵循输入:
if (...)
{
checkBox.style.display='none';
checkBox.nextSibling.style.display='none';
}
这将隐藏复选框后面的元素 - 标签。
顺便说一句,如果这适用于你 - 在服务器端它是一个oneliner
checkBox.Style["display"] = "none"; // will render the control hidden
或
checkBox.Visible = false; // will not render control at all