• 締切済み

【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

  • ASPとavascript

    はじめましてこんにちわ。 ただいまasp.net(vb)で開発をしております。 gridviewにバインドしています。 そこに新たにtextbox,LBLをいれています。 textboxに値が入力されたらjavascript(クライアント側)にてバインドした値*textboxをLBLにjavascriptを使って表示したいのですが方法がわかりません。 どなたか教えていただけないでしょうか??

  • ASP.Net GridView TextBoxで

    大変お世話になります。 FormViewにあるGridView を編集状態にした状態で、 Dim Gv As GridView = FormView1.Row.FindControl("GridView1") TextBoxのデータを変更した際に、他のTextBoxの内容を変更したいのですが、 この場合、GridViewのTextBoxのTextChangedイベントを使用しています。 ここで問題なのが、 (1) GridVew の行の Index の取得 (2) TextChangedイベント内での FindControl の記述の仕方 上記のやり方がよくわかりません。 ボタンを使用した場合の Index の取得などはわかるのですが、 GridView1_RowCreated イベントで Dim A As Button = CType(e.Row.FindControl("A"), Button) A.CommandArgument = e.Row.RowIndex.ToString() 上記(1)、(2)はどうしたらよいのかわかりません。 編集状態にあるGridView の Index の取得方法とローカル関数でのFindCotrol メソッドの やり方など、お分かりになる方がいらっしゃいましたら 何卒ご教授いただければと存じます。

  • 複数個のTextBoxでいずれかの内容が変更された事の把握

    Visual Basic 2008でのプログラミングです TextBoxを縦横5個づづ並べて、それぞれにテキストを表示させておいて、いずれかのTextBoxが変更された場合、各TextBoxのTextChangedイベントで処理するのでしょうが、25個のうちいずれかが変更されたことをまとめて検出する方法はないものでしょうか? ご教示お願い致します。

  • asp.netでtextboxの値を取得

    ASP.net Webフォームで質問です(VS2012) ASP.netのTextBoxコントロールではなく、HTMLのtextboxの値を取得することは可能でしょうか。 また、textboxが複数あった場合でも、全てを取得したいのですが、 textboxがいくつあるか、その全てを取得するにはどのようにすれば良いでしょうか。

  • getElementByIdでASP.NETのTextBoxを取得できない

    以下のようなJavaScriptのソースで、 TextBoxの値を取得しようとしています。 ------------------------------------------- 【ASP.NET】 <asp:TextBox ID="txtTemp_Jigyo" runat="server" ReadOnly="True">DataTemp</asp:TextBox> 【JavaScript】 var strData = document.getElementById("txtTemp"); alert(strData); var strDataValue = strData.value; alert(strDataValue ); ------------------------------------------- 実行すると4行目でエラーとなっているようで、 また、2行目のalertではobjectではなく、nullが返ってきています。 ほぼ、同環境の別PGでは正常に取得できているのですが、 なにかASP.NET or JavaScriptの記述に問題がある可能性はありませんか? よろしくおねがいします。

  • textboxとLabelを動的に変更する

    VB.netとaspで開発しています。 VB.netでDBからデータを取得して、画面に値を表示する際に 値が入っていたらLabelコントロールで値を表示し、入っていなかったらtextboxコントロールを表示させたいのですが、やり方がわかりません。 ご存知の方、よろしくお願いします。

  • 現在どのTextBox上にフォーカスがあるのかを取得したいのですが・・・

    以前、TextBox1.Focusedで、TextBox1にフォーカスがあるかどうか判定できるという回答をいただき助かりましたが、現在、どこのTextBoxにカーソル(フォーカス)があるのかを取得することはできないでしょうか? というのも、タブ移動であるTextBoxにフォーカスが移ったときに、隣り合わせたTextBoxに値を入れたいので。 TextBox1.Focusedでも実現できたのですが、以下のようにIF文の嵐になってしまい、TextBoxを増やすとIF文を頭からなめるので処理スピードに問題が出てきそうなので。 If Me.TextBox1.Focused = True Then  TextBox_A.Text = "値1" ElseIf TextBox2.Focused = True Then  TextBox_B.Text = "値2" ElseIf TextBox3.Focused = True Then  TextBox_C.Text = "値3" ElseIf TextBox4.Focused = True Then  TextBox_D.Text = "値3"   ・   ・   ・ LostFocuseとかで、実現した方がいいのかもしれませんが・・・どうでしょう? 毎度、面倒なご質問ばかりで、恐縮です。 ご教授、よろしくお願い致します。 ちなみに、コーディング環境は、VB.NETです。

  • ASP.NETでTextBoxのBackColor

    ASP.NETのC#でTextBoxのBackColorを変更すると、 BorderStyleやBorderColorも勝手に変わってしまいます。 BorderStyleやBorderColorを変えずに、 BackColorを変更することは可能でしょうか?

  • asp.net の質問です。

    asp.net初心者です。言語はvbを使用しています。 ボタンのクリック時にイベントを走らせる方法は なんとなくわかりますが(理解しているというより動く) テキストボックスの値が変わったときに 変更されたタイミングで別のテキストボックスの値を 設定するというのはWebプログラミングでは 難しいことなのでしょうか? 方法と解説を教えていただけると助かるのですが。 aspの本も買ったり、web検索したりしたのですが いまいちよく分からないというか 情報がないというか・・・困っています。 どなたかお力添えお願いします。

  • ASP.Net Enterキーで移動したいイベント

    大変お世話になっております。 Windowsフォームでの動作のようにASP.Net でも Enterキーにて次項目に移動したいと思い、いろいろと調べてみました。 <script language="javascript" type="text/javascript">   function ChgKeyCode() {     if (!(event.srcElement.type == "button" || event.srcElement.type == "submit")) {       if (event.keyCode == 13) {         event.keyCode = 9;       }     }   } </script> 上記スクリプトにて、EnterキーのコードをTabキーに変換してEnterでも次項目に移動できるようにしたのですが、これですと、TextBox にTextChangedイベントがあった場合にイベントが無視されてしまうのですが、どうすればよいでしょうか? Enterキーで次項目に移動しつつ、イベントも適応したいのですが、お知恵を拝借できればと存じます。 何卒よろしくお願いいたします。

専門家に質問してみよう