我试图隐藏数据字段,如果它是通过ASP.NET为null。 我有以下设置:
<script runat="server" type="text/vb">
// target the id called test
var test = document.getElementById("test");
// if test is not empty, show
// else hide test
if (test.value != null){
document.getElementById("test").style.visibility = visible;
}else{
document.getElementById("test").style.visibility = hidden;
}
<p><asp:Label runat="server" id="test"><%# Eval("DBField")%></asp:Label></p>
我离开这里了吗?无论我尝试什么,我都会收到错误。我不认为它应该如此复杂......任何想法/建议都会受到高度赞赏。
先谢谢你,
答案 0 :(得分:1)
不知道你的错误是什么,很难给你一个答案。跳出来的一件事是你没有使用asp.net控件的ClientId。尝试更改此内容:
var test = document.getElementById("test");
到此:
var test = document.getElementById("<%=test.ClientID%>");
为asp.net控件分配ID时,这不是呈现的ID。请阅读this article以获取更多信息。
答案 1 :(得分:1)
这里有一些可能的问题:
由于您使用的是服务器控件,因此ASP.NET运行时可能会更改其ID,具体取决于其父级。如果您在页面上查看来源,则可能会显示“ctl00_main_test”之类的ID或类似内容。为了得到这个,你必须做以下事情:
var test = document.getElementById("<%= test.ClientID %>");
if (test.text != null){
test.style.visibility = 'visible';
}else{
test.style..visibility = 'hidden';
}
由于“visibility”可以映射到CSS样式,因此您可能必须使用“visible”和“hidden”周围的引号
最后, getElementByID 应该适用于所有现代浏览器,但旧版浏览器可能会有不稳定的实现。我建议您查看 jquery 以简化此代码:
if ( $('#<%=test.ClientID>').text() != '' && $('#<%=test.ClientID%>').text() != null){
$('#<%=test.ClientID%>').show();
}else{
$('#<%=test.ClientID%>').hide();
}
答案 2 :(得分:1)
您需要在JavaScript中测试空字符串,如下所示:
var test = document.getElementById("<%=test.ClientID%>");
if (test){
test.style.visibility = (test.value == "" ? "hidden" : "visible");
}
修改强>
我刚注意到你正在使用数据绑定语法,这让我觉得这个Label在网格内部或其他东西。您可以尝试这样的事情:
<asp:Label ID="test" runat="server" Visible='<%#(String.IsNullOrEmpty(Eval("DBField")) == false)%>'><%#Eval("DBField")</asp:Label>
答案 3 :(得分:1)
我可以通过以下代码隐藏数据:
<asp:PlaceHolder ID="PlaceHolder" runat="server" Visible='<%# IIf((Eval("test")).ToString().Length > 0, "true", "false") %>'>
<h3>test</h3>
<asp:Label ID="test" runat="server" Text='<%# Bind("test") %>'></asp:Label>
</asp:PlaceHolder>
答案 4 :(得分:0)
Span
代码没有值:
if ($('#<%=test.ClientID%>').html() != "") //jQuery
或
if (document.getElementById("<%=test.ClientID%>").innerText != "")