Devo attivare il codice sul lato server per essere chiamato quando un TextBox perde lo stato attivo.ASP.NET TextBox LostFocus event
So che c'è l'evento lato client onblur e che non c'è alcun evento LostFocus, quindi come posso causare un postback quando si verifica che il mio TextBox perda l'attenzione?
Aggiornamento:
ho trovato un blog che sembra dare una soluzione abbastanza decente a questo. Implica l'aggiunta di un evento personalizzato a una sottoclasse TextBox e la registrazione di uno script client che richiama l'evento lato server nell'evento client JavaScript onblur.
Quello che segue è la mia applicazione 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
non ho provato questo come ho bisogno di sapere che cosa ha perso il controllo della messa a fuoco –