0

ユーザーがテキストボックスをクリックしたときに、サーバー側のイベントを実行する必要があります。これまでのところ、onfocus イベントを使用して JavaScript 関数を呼び出すことはできますが、onfocus を削除しようとすると、いくつかのコードを実行し、コントロールにフォーカスを戻してから、無限ループで onfocus イベントを再起動します。以下のサンプル...

HTML

<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True" onfocus="CallServer(this);"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server" AutoPostBack="True" onfocus="CallServer(this);"></asp:TextBox>

Javascript

function CallServer(obj) {
  if (obj != "") {
    var control = document.getElementById(obj.id)
    __doPostBack(obj.id, "onfocus");
  }
}

コードビハインド

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

   If IsPostBack Then
      Dim target As String = Page.Request.Params.Get("__EVENTTARGET")
      Dim eventarg As String = Page.Request.Params.Get("__EVENTARGUMENT")
      Dim PostControl As Control = Nothing

      If target <> "" Then
         PostControl = Page.FindControl(target)
      End If

      If eventarg = "onfocus" Then
         CType(PostControl, TextBox).Attributes("onfocus") = "null"

         ...do some code

         Page.SetFocus(PostControl)

         CType(ctrl, TextBox).Attributes.Add("onfocus", "CallServer(this)")
      End If
   End If

End Sub
4

1 に答える 1