用javascript填充后,文本框为空
本文关键字:文本 javascript 填充 | 更新日期: 2023-09-27 17:53:51
我用下面的代码创建了一个文本框:
<div style="clear:left;">
<asp:TextBox TextMode="MultiLine" runat="server" ID="selectText" ReadOnly="true" Width="560px" Height="50px"></asp:TextBox>
</div>
我用下面的代码填充它:
elSelText.value = elSelText.value.substr(0, position) + chosenoption2.value + " ";
然后我尝试在文本框发送值到服务器,但它是空的!
protected void btnUseSelectClick(object sender, EventArgs e)
{
sourceDetails.SelectCommand += " and " + selectText.Text;
Session["FilterSelectCommand"] = sourceDetails.SelectCommand;
tableResults.DataBind();
}
根据建议,我添加了AutoPostBack="true":
<div style="clear:left;">
<asp:TextBox TextMode="MultiLine" runat="server" AutoPostBack="true" ID="selectText" ReadOnly="true" Width="560px" Height="50px"></asp:TextBox>
</div>
但是没有用
虽然这对我来说是新闻,但似乎ReadOnly
属性没有跟踪来自客户端的更改。如果您想要"只读"功能,但仍然在服务器上获得该值,请在Page_Load
方法中放入以下内容:
selectText.Attributes.Add("readonly", "readonly");
并删除<asp:TextBox>
标签中的ReadOnly
(和AutoPostBack
)属性。
可能是ViewState的问题。尝试在页面加载事件中添加Page.IsPostBack
检查,如下所示:
If(!Page.IsPostBack)
{
// Data binding for the first call
}
我认为这是由于ReadOnly: ASP。Net注册在向您发送该页时哪些控件是只读的。
这些控件的值在发回时被丢弃,并且它被重新获取(我相信是从ViewState)。
一个解决这个问题的方法不是在aspx页面上设置readonly="true"
,而是用$(document).ready(your_function_here();)
(如果你使用jQuery)或用body onLoad
事件来设置它。