当TextBox失去焦点时,我需要在服务器端触发代码.
我知道有onblur客户端事件,并且没有LostFocus事件,所以当TextBox失去焦点时,如何才能导致回发?
更新:
我发现blog似乎给了一个相当不错的解决方案.它涉及向TextBox子类添加自定义事件,并注册在onblur JavaScript客户端事件中调用服务器端事件的客户端脚本.
以下是我在VB中的实现:
Public Class MyTextBox Inherits TextBox Implements IPostBackEventHandler Protected Overrides Sub OnInit(ByVal e As System.EventArgs) MyBase.OnInit(e) If Not Page.ClientScript.IsClientScriptBlockRegistered("OnBlurTextBoxEvent") Then Page.ClientScript.RegisterStartupScript(MyBase.GetType,"OnBlurTextBoxEvent",GetScript,True) Attributes.Add("onblur","OnBlurred('" & UniqueID & "','')") End If End Sub Public Delegate Sub OnBlurDelegate(ByVal sender As Object,ByVal e As EventArgs) Public Event Blur As OnBlurDelegate Protected Sub OnBlur() RaiseEvent Blur(Me,EventArgs.Empty) End Sub Private Function GetScript() As String Return "function OnBlurred(control,arg)" & vbCrLf & _ "{" & vbCrLf & _ " __doPostBack(control,arg);" & vbCrLf & _ "}" End Function Public Sub RaisePostBackEvent(ByVal eventArgument As String) Implements System.Web.UI.IPostBackEventHandler.RaisePostBackEvent OnBlur() End Sub End Class
解决方法
我发现
blog似乎给了一个相当不错的解决方案.它涉及向TextBox子类添加自定义事件,并注册在onblur JavaScript客户端事件中调用服务器端事件的客户端脚本.
以下是我在VB中的实现:
Public Class MyTextBox Inherits TextBox Implements IPostBackEventHandler Protected Overrides Sub OnInit(ByVal e As System.EventArgs) MyBase.OnInit(e) If Not Page.ClientScript.IsClientScriptBlockRegistered("OnBlurTextBoxEvent") Then Page.ClientScript.RegisterStartupScript(MyBase.GetType,arg);" & vbCrLf & _ "}" End Function Public Sub RaisePostBackEvent(ByVal eventArgument As String) Implements System.Web.UI.IPostBackEventHandler.RaisePostBackEvent OnBlur() End Sub End Class