我不知道如何在Javascript中设置hiddenField的值。有人可以告诉我该怎么做吗?
使用Javascript:
document.getElementById('hdntxtbxTaksit').value = "";
HTML:
<asp:HiddenField ID="hdntxtbxTaksit" runat="server" Value="" Visible="false"> </asp:HiddenField>
错误:“无法获取属性值''的值:'对象为空或未定义”
答案 0 :(得分:30)
在ASP.Net 4.0之前
客户端ID
获取在使用母版页的页面中生成的客户端ID。由于Master页面是UserControl类型,它将拥有自己的Id,并将页面视为Child控件,并生成一个前缀为ctrl_
的不同ID。
这可以通过在页面中使用<%= ControlName.ClientID %>
来解决,并且可以分配给任何字符串或稍后可以引用的javascript变量。
var myHidden=document.getElementById('<%= hdntxtbxTaksit.ClientID %>');
ASP.Net 4.0 +
ClientIDMode属性
使用此属性可以控制您为自己生成ID的方式。对于您的案例设置,页面级别的 ClientIDMode =“static”将解决问题。同样的事情也可以在控制层面应用。
答案 1 :(得分:5)
asp:HiddenField
as:
<asp:HiddenField runat="server" ID="hfProduct" ClientIDMode="Static" />
js code:
$("#hfProduct").val("test")
和背后的代码:
hfProduct.Value.ToString();
答案 2 :(得分:3)
试试这段代码:
$('hdntxtbxTaksit').val('test');
答案 3 :(得分:2)
答案 4 :(得分:1)
document.getElementById('<%=hdntxtbxTaksit.ClientID%>').value
您在服务器中设置的ID是服务器ID,它与客户端ID不同。
答案 5 :(得分:1)
我的理解是,如果您在初始页面加载期间设置controls.Visible = false
,则不会在客户端响应中呈现它。我建议解决你的问题是
不要使用占位符,从场景判断,除了需要在服务器端动态添加控件之外,您不需要占位符。使用div,不使用runat=server
。您始终可以使用css控制该div的可见性。
如果您需要稍后动态添加控件,请使用占位符,但不要设置visible = false
。占位符无论如何都不会显示任何显示,使用css设置该占位符的可见性。以下是编程方式:
placeholderId.Attributes["style"] = "display:none";
无论如何,正如其他人所说,出现问题是因为一旦设置control.visible = false
,它就不会在客户端响应中呈现。
答案 6 :(得分:0)
我怀疑您需要在JavaScript代码中使用ClientID
而不是文字ID字符串,因为您已将字段标记为runat="server"
。
,例如,如果您的JavaScript代码在aspx文件中(不是单独的JavaScript文件):
var val = document.getElementById('<%=hdntxtbxTaksit.ClientID%>').value;
如果它是在一个单独的JavaScript文件中,而不是由ASP.Net提供的,那么你必须以另一种方式找到它,比如按类。
答案 7 :(得分:0)
我建议你使用HiddenField的ClientID。首先在代码隐藏的任何Javascript变量中注册其客户端ID,然后在客户端脚本中使用它。为:
.cs文件代码:
ClientScript.RegisterStartupScript(this.GetType(), "clientids", "var hdntxtbxTaksit=" + hdntxtbxTaksit.ClientID, true);
然后在JS中使用以下代码:
document.getElementById(hdntxtbxTaksit).value= "";
答案 8 :(得分:0)
尝试按照document.getElementByName('hdntxtbxTaksit').value = '0';