如何在javascript中设置asp:checkbox的可见性

时间:2013-12-10 14:58:51

标签: javascript checkbox

我的页面中有这个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>

1 个答案:

答案 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