无法从Javascript访问隐藏的HTML元素

时间:2015-03-02 04:49:36

标签: javascript asp.net

在我的代码中,我有一个简单的字段,如下所示

<input ID="lblDocumentPath" Class="DefaultButtons" runat="server" ReadOnly="true" Visible="false"></input>

当我将visible属性设置为true时,元素被正确加载并且JS能够读取它。

document.getElementById(filePathLabel).value = arrRowsArray[1];

但是,如果属性设置为false,则JS无法找到该元素。如果我在IE中打开DOM资源管理器,我看到的只是一个空输入字段。

</input><//input>

不确定,我在这里做错了什么。请让我知道我忽略了什么愚蠢的错误。

编辑:

我想我会发疯的。我不确定,我正在做什么。无论如何,这就是我通常做的事情。 Accessing hidden field value in javascript

简单的东西,对。但显然我的代码背后根本找不到该死的场。它只是一直说,&#34; lblDocumentPath在当前上下文中不存在。

我花了3个小时,试图将一个隐藏的字段传递给后面的代码。 :(

3 个答案:

答案 0 :(得分:1)

呈现服务器端字段时,其客户端ID会更改。使用以下代码访问javascript中的字段,但如果您的javascript代码位于相同的.aspx或.asmx文件中,它将起作用 -

document.getElementById("<%=lblDocumentPath.ClientID %>");

答案 1 :(得分:0)

JS解决方案:

使用隐藏输入字段的正确方法如下:

<input id="lblDocumentPath" type="hidden"></input>

按照此格式,您仍然可以按如下方式访问隐藏字段:

document.getElementById("lblDocumentPath");

查看更多:w3schools.com

jsfiddle:http://jsfiddle.net/j1w26new/

ASP.NET / jQuery解决方案:

如果某个字段通过ASP.NET级别声明为隐藏,则它将显示为已注释的块。要找到它,请使用以下命令:

var hiddenField = $("<%= lblDocumentPath.ClientID %>");

这将找到以下ASP字段:

<asp:HiddenField ID="lblDocumentPath" runat="server" />

答案 2 :(得分:0)

'visible'不是有效的html属性。如果要隐藏元素,请将style属性设置为“display:none;”

<input ID="lblDocumentPath" Class="DefaultButtons" ReadOnly="true" style="display: none"></input>

什么是runat='server'?您是否尝试将asp.net服务器端控件的属性与html控件混合使用?它不起作用。