26

我不知道如何在 Javascript 中设置 hiddenField 的值。有人可以告诉我怎么做吗?

Javascript:

document.getElementById('hdntxtbxTaksit').value = "";

HTML:

<asp:HiddenField ID="hdntxtbxTaksit" runat="server" Value="" Visible="false">   </asp:HiddenField>

错误:“无法获取属性\'value\'的值:对象为空或未定义”

4

9 回答 9

38

在 ASP.Net 4.0 之前

客户编号

获取在使用母版页的页面中生成的客户端 ID。由于母版页是 UserControl 类型,它将有自己的 Id 并将页面视为子控件并生成带有前缀的不同 id like ctrl_

这可以通过<%= ControlName.ClientID %>在页面中使用来解决,并且可以分配给任何字符串或稍后可以引用的 javascript 变量。

var myHidden=document.getElementById('<%= hdntxtbxTaksit.ClientID %>');
  • 如果您使用母版页,Asp.net 服务器控件 ID 会有所不同。

ASP.Net 4.0 +

ClientIDMode 属性

使用此属性来控制您希望如何为您生成 ID。对于您的情况,在页面级别设置ClientIDMode="static"将解决问题。同样的事情也可以应用于控制级别。

于 2012-11-19T13:41:35.227 回答
15

asp:HiddenField作为:

<asp:HiddenField runat="server" ID="hfProduct" ClientIDMode="Static" />

js代码:

$("#hfProduct").val("test")

以及背后的代码:

hfProduct.Value.ToString();
于 2015-07-16T09:50:39.630 回答
4
  • 首先,您需要正确创建隐藏字段

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

  • 然后你需要为隐藏字段设置值

    如果你不使用Jquery,你应该使用它:

    document.getElementById("<%= hdntxtbxTaksit.ClientID %>").value = "test";

    如果您使用的是Jquery,它应该是这样的:

    $("#<%= hdntxtbxTaksit.ClientID %>").val("test");

于 2014-09-23T14:11:32.057 回答
3
document.getElementById('<%=hdntxtbxTaksit.ClientID%>').value

您在服务器中设置的 id 是与客户端 id 不同的服务器 id。

于 2012-11-19T13:41:27.127 回答
3

试试这个代码:

$('hdntxtbxTaksit').val('test');
于 2013-10-15T22:39:52.973 回答
1

我怀疑您需要ClientID在 JavaScript 代码中使用而不是文字 ID 字符串,因为您已将该字段标记为runat="server".

例如,如果您的 JavaScript 代码位于 aspx 文件中(不是单独的 JavaScript 文件):

var val = document.getElementById('<%=hdntxtbxTaksit.ClientID%>').value;

如果它位于不是由 ASP.Net 内容呈现的单独 JavaScript 文件中,您将不得不以另一种方式找到它,例如按类。

于 2012-11-19T13:41:25.513 回答
1

我的理解是,如果您controls.Visible = false在初始页面加载期间设置,它不会在客户端响应中呈现。我解决您问题的建议是

不要使用占位符,从场景来看,其实不需要占位符,除非需要在服务器端动态添加控件。使用 div,不使用runat=server. 您始终可以使用 css 控制该 div 的可见性。如果以后需要动态添加控件,请使用占位符,但不要设置visible = false. 无论如何,占位符不会有任何显示,使用 css 设置该占位符的可见性。以下是如何以编程方式进行操作:

placeholderId.Attributes["style"] = "display:none";

无论如何,正如其他人所说,您的问题会发生,因为一旦您设置control.visible = false,它就不会在客户端响应中呈现。

于 2013-06-13T12:12:26.653 回答
0

我会建议你使用 HiddenField 的 ClientID。首先在代码隐藏的任何 Javascript 变量中注册其客户端 ID,然后在客户端脚本中使用它。作为:

.cs 文件代码:

ClientScript.RegisterStartupScript(this.GetType(), "clientids", "var hdntxtbxTaksit=" + hdntxtbxTaksit.ClientID, true);

然后在JS中使用以下代码:

document.getElementById(hdntxtbxTaksit).value= ""; 
于 2013-06-13T13:34:54.890 回答
0

尝试设置 Javascript 值,如document.getElementByName('hdntxtbxTaksit').value = '0';

于 2013-08-02T18:46:54.007 回答