0

テキストボックスMytbxがあり、そのonchangeイベントのJavaScriptがあるとします。次のようなPage_Loadイベントのコードビハインドに接続します。

Mytbx.Attributes.Add("onchange", "test();")

次に、このテキストボックスのコードビハインドのテキストを次のように変更しました(たとえば、ボタンクリックイベントの場合)。

Mytbx.Text = MyValue

onchangeイベントが発生することを期待しています。しかし実際にはそうではありません。ボタンをクリックしてMytbxの値を変更しても、何も起こりません。

この問題を解決するにはどうすればよいですか?

4

2 に答える 2

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
}
于 2013-01-07T18:32:46.790 に答える
1

クライアントとサーバーの処理を混在させています。サーバーのテキストボックスを変更した場合、フォームをポストバックしていないため、実行するクライアントコードはまだありません。サーバー上で何かを変更したときに実行する必要のあるJavaScriptコードがある場合は、ポストバックが完了したときにページが読み込まれたときに実行するJavascript関数を登録する必要があります。これをチェックしてください:http://msdn.microsoft.com/en-us/library/system.web.ui.page.registerstartupscript (v = vs.110).aspx

于 2013-01-07T18:25:40.053 に答える