如果位置数量不同,我正在使用此javascript函数显示不同的弹出窗口。如果txtbox的可见性为false,则txthiddenloccount值为null。如果可见性为真,则可以正常工作。这有什么奇怪的?有人可以帮我吗。
function isPageValid()
{
var validated = Page_ClientValidate('groupProfile');
var loccount = document.getElementById("ctl00_ContentPlaceHolder1_txthiddenloccount").value;
if(validated)
{
if(loccount == '1')
{
var mdlPopup = $find('<%= ModalPopupExtendersavechanges.ClientID %>');
if(mdlPopup)
{
mdlPopup.show();
}
}
else
{
var mdlPopup = $find('<%= ModalPopupExtenderMerchantUpdate.ClientID %>');
if(mdlPopup)
{
mdlPopup.show();
}
}
}
}
答案 0 :(得分:3)
如果txthiddenloccount
是asp:TextBox
且Visible属性设置为false,那么它在javascript可读的页面上不存在。它将存储在ViewState中。
对于类似这样的内容,您可能最好使用asp:HiddenField
并设置值,这将创建一个可通过javascript访问的input type='hidden'
。
答案 1 :(得分:0)
在这里,您尝试获取txthiddenloccount控件的值,该值未在页面上呈现,因为其可见性为false。 所以首先你必须检查它是否为空,你可以编写这样的代码。
var loccount='';
if(document.getElementById("ctl00_ContentPlaceHolder1_txthiddenloccount") != null)
{
loccount = document.getElementById("ctl00_ContentPlaceHolder1_txthiddenloccount").value;
}
答案 2 :(得分:0)
如果控件的Visible属性通过ASP.NET设置为false,它将成为控件树的一部分,但实际上永远不会呈现给页面。如果它没有呈现给页面,JavaScript就无法访问它。
如果你想使用ASP.NET隐藏它,你可以用C#...
这样做txthiddenloccount.Style.Add("display", "none");
这不会阻止控件在页面上呈现,它将使用CSS来隐藏它。或者,您可以这样做,但它可能不是您想要的,在视觉上......
txthiddenloccount.Style.Add("visibility", "hidden");
希望有所帮助。