js为textbox文本框赋值后台取值的问题

发布时间:2020-08-17编辑:脚本学堂
有关js脚本为textbox文本框赋值导致的后台聚会问题,客户端不能输入,但可通过js赋值,并在服务器端获取到js赋的值,需要的朋友参考下。

先来了解下input的两个属性readonly,disabled,readonly,enabled是asp:textbox的属性。
要求: 客户端不能输入,但可通过js赋值,并在服务器端获取到js赋的值

1,前台页面
 

复制代码 代码示例:
<asp:TextBox ID="TextBox1" runat="server" ReadOnly="true" Enabled ></asp:TextBox>
<input id="Text1" runat="server" type="text" readonly="readonly" />
<input id="Button1" type="button" value="客户端赋值" onclick="doClick()" />
<asp:Button ID="Button2" runat="server" Text="服务器端获取" OnClick="Button2_Click" />
<script language="javascript">
function $(s){return document.getElementById(s);}
   function doClick()
   {
   $('<%=Text1.ClientID %>').value="wufeng";
   $('<%=TextBox1.ClientID %>').value="wufeng";
   }
   </script>后台:
   protected void Button2_Click(object sender, EventArgs e)
   {
   Response.Write(Text1.Value + " Hello<br/>");
   Response.Write(TextBox1.Text + " Hello<br/>");
   }

如下图:
js<a href=http://www.jb200.com/jb/ target=_blank class=infotextkey>脚本</a>为textbox<a href=http://www.jb200.com/zt/wenbenkuang/ target=_blank class=infotextkey>文本框</a>赋值

2,执行服务器端回传前的客户端代码:
 

复制代码 代码示例:
<input name="TextBox1" type="text" readonly="readonly" id="TextBox1" class="ClassText" />
<input name="Text1" type="text" id="Text1" readonly="readonly" />
<br />
<input id="Button1" type="button" value="客户端赋值" onclick="doClick()" />
<input type="submit" name="Button2" value="服务器端获取" id="Button2" class="ClassBtn" />

如下图:
js脚本为textbox文本框赋值

3,执行服务器端回传后的客户端代码:
 

复制代码 代码示例:
<input name="TextBox1" type="text" readonly="readonly" id="TextBox1" class="ClassText" />
<input name="Text1" type="text" id="Text1" readonly="readonly" value="wufeng" />
<br />
<input id="Button1" type="button" value="客户端赋值" onclick="doClick()" />
<input type="submit" name="Button2" value="服务器端获取" id="Button2" class="ClassBtn" />

区别:Text1的value属性前后发生了变化,而TextBox1并不能从后台获取到。

解决:
在Page_Load中设置
TextBox1.Attributes["contentEditable"] = "false";//等效于ReadOnly="true"或直接从前台设置TextBox的属性contentEditable="false"

解决办法:
因为js给textbox赋值,.net不会保存textbox的状态,所以有时会丢掉textbox的值,因此要在后台取值正确的方法是:request.form["textboxid"]。