• 締切済み

【ASP2.0】TextBoxのフォーカスアウトでPostBackを実装させたい

ASP.NET+VB.NET(2.0)でWebアプリを作成しております。 TextBoxのTextChangedイベントは値が変更したときにしか発生されない ようですので、値が変更されなくてもTextChangedイベントとしてサー バサイドで処理をしたいのですがよい方法が思いつきません。 TextBoxにJavaScriptのonBlurでTextChangedイベントを擬似的に発生さ せる方法をご存じの方、よろしくお願いいたします。

みんなの回答

回答No.2

お世話になります。 > TextBoxのフォーカスアウトでPostBackを実装させたい このことだけであれば、TextBox の AutoPostBack プロパティを True にすれば実現できると思います。 ただし、これは値が変更された時のみに限られます。 > 値が変更されなくてもTextChangedイベントとしてサーバサイドで処理をしたい 上記 AutoPostBack プロパティとの組み合わせにより onBlur="javascript:setTimeout('__doPostBack(\'TextBox1\',\'\')', 0)" と書けば、サーバー側へポストはされます(Page_Load は通る)が、 TextChangeEvent は発生しません。 本来 TextChange のイベントではないわけですので、 もし出来たとしても、実装するのは私は賛成しかねます。 どうしても、何も無い時にも TextChanged をと同等の処理をやりたいのであれば、 PageLoad の中で Text が変わったかどうかを判断して 変わっていれば TextChanged 、そうでなければ PageLoad 内でそれなりの処理をする等の方法があると思います。

akudou001
質問者

補足

回答ありがとうございます。 > 上記 AutoPostBack プロパティとの組み合わせにより > onBlur="javascript:setTimeout('__doPostBack(\'TextBox1> > > > > \',\'\')', 0)" > と書けば、サーバー側へポストはされます(Page_Load は通る)が、 > TextChangeEvent は発生しません。 > 本来 TextChange のイベントではないわけですので、 > もし出来たとしても、実装するのは私は賛成しかねます。 当方もこの方法は試してみましたが、どうも動きに不安を感じたので 実装させていません。 TextChangeEventを発生させるには__doPostBack関数にどういった 引数を送るのかが謎です。 > どうしても、何も無い時にも TextChanged をと同等の処理をやりた> いのであれば、 > PageLoad の中で Text が変わったかどうかを判断して > 変わっていれば TextChanged 、そうでなければ > PageLoad 内でそれなりの処理をする等の方法があると思います。 今現在は、JavaScriptでonBlur時にHidden項目に値を入れ、その後submitさせてPage_Loadで判断させるようにしています。 しかし、この場合だとMasterPageなど使っている場合にいろいろと 制限が出てきてしまうので、やはりTextChangeEventとして拾いたい ところです。

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

<input type="text" onchange="alert('onchange')" onblur="this.onchange()">

akudou001
質問者

補足

VB側でTextChangedイベントとして拾いたいのでこれでは無理かと…。 また、この場合 <input type="text" onblur="alert('onchange')"> と同じことですよね?

関連するQ&A