我需要触发服务器端code被称为当一个TextBox失去焦点。
我知道有是的onblur客户端事件,没有LostFocus事件,所以我怎么可能会导致回发时,我的文本框失去焦点发生?
更新:
我已经找到了博客这似乎给了pretty体面的解决办法了这一点。它涉及添加自定义事件一个TextBox的子类,和注册这就要求在的onblur JavaScript客户端事件的服务器端事件的客户端脚本。
以下是我在VB中实现:
公共类MyTextBox 继承的TextBox 实现IPostBackEventHandler 受保护的覆盖子的OnInit(BYVAL E上System.EventArgs) MyBase.OnInit(五) 如果不Page.ClientScript.IsClientScriptBlockRegistered(OnBlurTextBoxEvent),然后 Page.ClientScript.RegisterStartupScript(MyBase.GetType,OnBlurTextBoxEvent,getScript加入,真) Attributes.Add(的onblur,OnBlurred('与&的UniqueID&放大器;','')) 万一 结束小组 公共委托子OnBlurDelegate(BYVAL发件人为对象,BYVAL E上的EventArgs) 公共事件模糊效果OnBlurDelegate 保护小组的onblur() 模糊的RaiseEvent(ME,EventArgs.Empty) 结束小组 私有函数getScript加入()作为字符串 返回功能OnBlurred(控制,ARG)与& vbCrLf&安培; _ {&放大器; vbCrLf&安培; _ __doPostBack(控制,ARG); &安培; vbCrLf&安培; _ } 结束功能 公用Sub RaisePostBackEvent(BYVAL eventArgument作为字符串)实现System.Web.UI.IPostBackEventHandler.RaisePostBackEvent 的onblur() 结束小组末级解决方案
我已经找到了博客这似乎给了pretty体面的解决办法了这一点。它涉及添加自定义事件一个TextBox的子类,和注册这就要求在的onblur JavaScript客户端事件的服务器端事件的客户端脚本。
以下是我在VB中实现:
公共类MyTextBox 继承的TextBox 实现IPostBackEventHandler 受保护的覆盖子的OnInit(BYVAL E上System.EventArgs) MyBase.OnInit(五) 如果不Page.ClientScript.IsClientScriptBlockRegistered(OnBlurTextBoxEvent),然后 Page.ClientScript.RegisterStartupScript(MyBase.GetType,OnBlurTextBoxEvent,getScript加入,真) Attributes.Add(的onblur,OnBlurred('与&的UniqueID&放大器;','')) 万一 结束小组 公共委托子OnBlurDelegate(BYVAL发件人为对象,BYVAL E上的EventArgs) 公共事件模糊效果OnBlurDelegate 保护小组的onblur() 模糊的RaiseEvent(ME,EventArgs.Empty) 结束小组 私有函数getScript加入()作为字符串 返回功能OnBlurred(控制,ARG)与& vbCrLf&安培; _ {&放大器; vbCrLf&安培; _ __doPostBack(控制,ARG); &安培; vbCrLf&安培; _ } 结束功能 公用Sub RaisePostBackEvent(BYVAL eventArgument作为字符串)实现System.Web.UI.IPostBackEventHandler.RaisePostBackEvent 的onblur() 结束小组末级I need to trigger code on the server side to be called when a TextBox loses focus.
I know there is the onblur client side event, and that there is no LostFocus event, so how can I cause a postback to occur when my TextBox loses focus?
Update:
I have found a blog which seems to give a pretty decent solution to this. It involves adding a custom event to a TextBox subclass, and registering a client script which calls the server-side event in the onblur JavaScript client event.
The following is my implementation in 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解决方案
I have found a blog which seems to give a pretty decent solution to this. It involves adding a custom event to a TextBox subclass, and registering a client script which calls the server-side event in the onblur JavaScript client event.
The following is my implementation in 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
更多推荐
ASP.NET文本框LostFocus事件
发布评论