ASP.NET在Javascript中设置hiddenfield值

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

使用Javascript:

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

HTML:

   

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

在ASP.Net 4.0之前

客户端ID

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

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

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

ASP.Net 4.0 +

ClientIDMode属性

使用此属性可以控制您为自己生成ID的方式。 对于您的案例设置,页面级别的ClientIDMode =“static”将解决问题。 同样的事情也可以在控制水平上应用。

试试这段代码:

 $('hdntxtbxTaksit').val('test'); 

asp:HiddenField为:

  

js代码:

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

和背后的代码:

 hfProduct.Value.ToString(); 
  • 首先,您需要正确创建隐藏字段

  • 然后,您需要将值设置为隐藏字段

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

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

    如果你正在使用Jquery ,它应该是这样的:

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

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

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

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

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

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

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

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

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

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

如果它是在一个单独的JavaScript文件中,而不是由ASP.Net提供的东西,那么你必须以另一种方式找到它,比如按类。

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

.cs文件代码:

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

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

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

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