假设我有一个文本框Mytbx,我的onchange事件有一个javascript。我把它挂在Page_Load事件中的代码中,如:
Mytbx.Attributes.Add("onchange", "test();")
然后我更改了此文本框的代码隐藏文本(例如,在按钮单击事件中):
Mytbx.Text = MyValue
我希望onchange事件被解雇。但实际上,事实并非如此。当我点击按钮更改Mytbx的值时,没有任何事情发生。
如何解决此问题?
答案 0 :(得分:5)
onchange。因此,当您在后面的代码中设置文本框值时,不会发生任何事情。
如果您想在客户端处理文本更改事件:
<script>
function test(txt){
alert(txt.value);
};
</script>
<asp:TextBox ID="txt" runat="server" onchange="test(this);"></asp:TextBox>
如果要在服务器端处理文本更改事件,可以执行以下操作:
HTML:
<asp:TextBox ID="txt" runat="server" OnTextChanged="txt_OnTextChanged" AutoPostBack="true"></asp:TextBox>
CS:
protected void txt_OnTextChanged(object sender, EventArgs e)
{
// Do something
}
答案 1 :(得分:1)
您正在混合客户端和服务器处理。如果您更改SERVER上的文本框,则没有客户端代码可以运行,因为您还没有发布表单。如果您在服务器上更改某些内容时必须运行javascript代码,则需要注册该Javascript函数,以便在回发完成后加载页面时运行。看看这个:http://msdn.microsoft.com/en-us/library/system.web.ui.page.registerstartupscript(v=vs.110).aspx