ASP.NET文本框LostFocus事件 [英] ASP.NET TextBox LostFocus event

查看:352
本文介绍了ASP.NET文本框LostFocus事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要触发服务器端code被称为当一个TextBox失去焦点。

我知道有是的onblur客户端事件,没有LostFocus事件,所以我怎么可能会导致回发时,我的文本框失去焦点发生?

更新:

我已经找到了<一个href=\"http://sbiefeld.com/2008/09/17/extending-the-aspnet-textbox-to-have-an-onblur-server-side-event/\"相对=nofollow>博客这似乎给了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('与&amp;的Un​​iqueID&放大器;',''))
        万一
    结束小组    公共委托子OnBlurDelegate(BYVAL发件人为对象,BYVAL E上的EventArgs)    公共事件模糊效果OnBlurDelegate    保护小组的onblur()
        模糊的RaiseEvent(ME,EventArgs.Empty)
    结束小组    私有函数getScript加入()作为字符串
        返回功能OnBlurred(控制,ARG)与&amp; vbCrLf&安培; _
                {&放大器; vbCrLf&安培; _
                __doPostBack(控制,ARG); &安培; vbCrLf&安培; _
                }
    结束功能    公用Sub RaisePostBackEvent(BYVAL eventArgument作为字符串)实现System.Web.UI.IPostBackEventHandler.RaisePostBackEvent
        的onblur()
    结束小组
末级


解决方案

我已经找到了<一个href=\"http://sbiefeld.com/2008/09/17/extending-the-aspnet-textbox-to-have-an-onblur-server-side-event/\"相对=nofollow>博客这似乎给了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('与&amp;的Un​​iqueID&放大器;',''))
        万一
    结束小组    公共委托子OnBlurDelegate(BYVAL发件人为对象,BYVAL E上的EventArgs)    公共事件模糊效果OnBlurDelegate    保护小组的onblur()
        模糊的RaiseEvent(ME,EventArgs.Empty)
    结束小组    私有函数getScript加入()作为字符串
        返回功能OnBlurred(控制,ARG)与&amp; 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事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆