- 締切済み
【ASP2.0】TextBoxのフォーカスアウトでPostBackを実装させたい
ASP.NET+VB.NET(2.0)でWebアプリを作成しております。 TextBoxのTextChangedイベントは値が変更したときにしか発生されない ようですので、値が変更されなくてもTextChangedイベントとしてサー バサイドで処理をしたいのですがよい方法が思いつきません。 TextBoxにJavaScriptのonBlurでTextChangedイベントを擬似的に発生さ せる方法をご存じの方、よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- naganaga_001
- ベストアンサー率71% (172/242)
お世話になります。 > TextBoxのフォーカスアウトでPostBackを実装させたい このことだけであれば、TextBox の AutoPostBack プロパティを True にすれば実現できると思います。 ただし、これは値が変更された時のみに限られます。 > 値が変更されなくてもTextChangedイベントとしてサーバサイドで処理をしたい 上記 AutoPostBack プロパティとの組み合わせにより onBlur="javascript:setTimeout('__doPostBack(\'TextBox1\',\'\')', 0)" と書けば、サーバー側へポストはされます(Page_Load は通る)が、 TextChangeEvent は発生しません。 本来 TextChange のイベントではないわけですので、 もし出来たとしても、実装するのは私は賛成しかねます。 どうしても、何も無い時にも TextChanged をと同等の処理をやりたいのであれば、 PageLoad の中で Text が変わったかどうかを判断して 変わっていれば TextChanged 、そうでなければ PageLoad 内でそれなりの処理をする等の方法があると思います。
- todo36
- ベストアンサー率58% (728/1234)
<input type="text" onchange="alert('onchange')" onblur="this.onchange()">
補足
VB側でTextChangedイベントとして拾いたいのでこれでは無理かと…。 また、この場合 <input type="text" onblur="alert('onchange')"> と同じことですよね?
補足
回答ありがとうございます。 > 上記 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として拾いたい ところです。