js改变了label的值,但按钮单击事件中取到的总是Lable控件的初始值!
问题:Lable1有个初始值,比如是:3,通过js把Label1的Text改变成6,值的确变为6了(注意通过js改变的Label1的值),但在按钮单击事件中取到的仍然是3?
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write(Label1.Text); //仍然是3?为什么
}
...全文
请发表友善的回复…
发表回复
神奇的小猪 2013-07-18
- 打赏
- 举报
你的意思是浏览器解析成input就能取到值吗?麻烦你再个解释一下为什么TextBox的readonly属性设为true的时候取到的是原来的值,设为false以后取到的才是赋值后的值呢?
[/quote]
那必须的啊,readonly属性设为true就是只读的了,
<input name="TextBox1" type="text" readonly="readonly" id="TextBox1">
js根本不可能修改这个控件的值了。当然取的是以前的值H_Gragon 2013-07-18
- 打赏
- 举报
你的意思是浏览器解析成input就能取到值吗?麻烦你再个解释一下为什么TextBox的readonly属性设为true的时候取到的是原来的值,设为false以后取到的才是赋值后的值呢?
johneyson 2013-07-17
- 打赏
- 举报
其实。。。我在犹豫答不答。。别人已经把解决方法说了。。但是。
还是说一下原理吧
在.NET里。FORM提交的只有INPUT类型的值,换句话说,其他类型的值
FORM POST上去都是不会被FORM带上去的,楼主可以监视一下Request就很清楚了,这是HTTP POST的机制!!!
神奇的小猪 2013-07-17
- 打赏
- 举报
你这样倒是可以,但为什么能取到隐藏字段的值,取不到lable的值呢?[/quote]
因为通过JS 给 hidden赋值了,这个hidden是input的,浏览器解析之后也还是 input ,所以可以取到值
[/quote]
反正记得 服务器控件 在浏览器里解析成的不是 input的,通过js 改变值之后 ,在后台取的还是控件原来的值,一般这种情况,通过隐藏控件hidden来取值
神奇的小猪 2013-07-17
- 打赏
- 举报
你这样倒是可以,但为什么能取到隐藏字段的值,取不到lable的值呢?[/quote]
因为通过JS 给 hidden赋值了,这个hidden是input的,浏览器解析之后也还是 input ,所以可以取到值
H_Gragon 2013-07-17
- 打赏
- 举报
你这样倒是可以,但为什么能取到隐藏字段的值,取不到lable的值呢?
ztszhq 2013-07-17
- 打赏
- 举报
哪为什么把label还为textbox就可以取到赋值后的值呢?[/quote]
<asp:Label 解析后 是 span
不是input 估计是这问题[/quote]
你们有什么好办法在按钮单击事件中取到js赋值后有的值吗?[/quote]
不行弄个 hidden吧。。改的时候label hidden都改 后台取值 取hidden 的
H_Gragon 2013-07-17
- 打赏
- 举报
哪为什么把label还为textbox就可以取到赋值后的值呢?[/quote]
<asp:Label 解析后 是 span
不是input 估计是这问题[/quote]
你们有什么好办法在按钮单击事件中取到js赋值后有的值吗?
神奇的小猪 2013-07-17
- 打赏
- 举报
<head runat="server">
<title></title>
<script type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script>
<script type="text/javascript">
$(function () {
$("#Label1").text(6);
$("#hdlb").val($("#Label1").text());
})
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:Label ID="Label1" runat="server" Text="3" EnableViewState="False"></asp:Label>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
<input type="hidden" id="hdlb" value="" runat="server"/>
</form>
</body>
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write(hdlb.Value);
}
这样搞就好啦。。。ztszhq 2013-07-17
- 打赏
- 举报
哪为什么把label还为textbox就可以取到赋值后的值呢?[/quote]
<asp:Label 解析后 是 span
不是input 估计是这问题
神奇的小猪 2013-07-17
- 打赏
- 举报
貌似发现问题了,看label在浏览器解析后的样子:
<span id="Label1" name="Label1">6</span>
lin11211408 2013-07-17
- 打赏
- 举报
js 操作 label 是 innerHTML 而不是 text
H_Gragon 2013-07-17
- 打赏
- 举报
哪为什么把label还为textbox就可以取到赋值后的值呢?
H_Gragon 2013-07-17
- 打赏
- 举报
<asp:Label ID="Label1" runat="server" Text="3"></asp:Label>
我直接这么赋值的Page_load中无代码!
全栈极简 2013-07-17
- 打赏
- 举报
没有回发到服务器,所有后台不认。
q107770540 2013-07-17
- 打赏
- 举报
帖出你的page_load事件来看看
page_load (...)
{
if(!IsPostBack)
{
//你之前的代码
}
}