HiddenField 的值未更新
Posted
技术标签:
【中文标题】HiddenField 的值未更新【英文标题】:Value of a HiddenField not updating 【发布时间】:2011-09-11 22:49:58 【问题描述】:这两个我都试过了:
<asp:HiddenField ID = "selectedHour" runat="server" Value="blahblah" />
<input type="hidden" id="myHour" name="hour" Value="blahblah" runat="server"/>
我尝试用 javascript 更新它:
<script type="text/javascript">
function addEventByClick(hour)
document.getElementById("myHour").Value = hour;
alert(document.getElementById("myHour").Value);
document.getElementById("dummyButton").click();
</script>
哪个“有效”:警报给了我正确的数字。
然后,当我点击提交时,它会调用一个 C# 方法(通过点击一个 asp.net 组件来调用),它会这样做:
String h = myHour.Value;
//or
//String h = Request.Form["myHour"];
这总是返回“blahblah”,即初始值。
所有这些东西都在一个更新面板中,但它在同一个更新面板中,都在同一个 ContentTemplate 中。
那为什么不更新呢?
编辑:谢谢大家。我讨厌当我得到 3 个完美答案时,我怎么知道要检查哪一个...
【问题讨论】:
这是做什么的? ->document.getElementById("dummyButton").click()
@Rohan 模拟点击按钮,完美运行。我用它来打开一个模式弹出窗口,因为用户可以通过多种方式获得该弹出窗口。
不确定,因为.click()
在技术上应该适用于 jquery 对象,而不是您选择的 DOM 对象。
【参考方案1】:
javascript 不区分大小写。 试试:
replace document.getElementById("myHour").Value = hour; by
document.getElementById("myHour").value = hour; and
document.getElementById("myHour").Value by
document.getElementById("myHour").value
【讨论】:
你的意思是 javascript IS 区分大小写。 =D【参考方案2】:尝试使用value
而不是Value
。浏览器对这些东西很挑剔。
或者,使用jQuery,你的问题就会神奇地消失:
$('#myobject').val( 'new value' );
【讨论】:
我......我不敢相信这有效。我认真地为此工作了 30 分钟。 @Xaisoft:有时甚至 html 也是如此,这取决于您的浏览器。使用 jQuery 消除了“神奇地不起作用”的问题。您不能误用.val
方法。每个拼写错误都会引发显式错误,而不是静默失败。
人们一直在建议使用 jquery。我对 asp.net 还不是很满意,但我想是时候尝试一下了。
@Jeremy,asp.net 和 jquery 是两个完全不同的东西。 Stefan 正在谈论 jquery 为您提供的原始 javascript 的封装。
@Xaisoft 我说我对我正在学习的新技术(asp.net、javascript、html)不太满意,我现在最不想做的就是添加一些东西不然我不太会用。【参考方案3】:
尝试使用未大写的值,用于原始 html:
document.getElementById("myHour").value = hour
【讨论】:
以上是关于HiddenField 的值未更新的主要内容,如果未能解决你的问题,请参考以下文章