Cómo escribir el método de enfoque perdido para el método de texto asp.net? Por favor, ¿alguien tiene alguna idea de escribir esto, compartir conmigo?Método Lost Focus para asp.net textbox?
Respuesta
Así que sé que todos han mostrado el enfoque básico del lado del cliente, y eso está bien, pero al menos quería mostrar una solución para manejar un evento específico del lado del cliente en el servidor.
Echemos un vistazo al código y lo repasemos pieza por pieza.
Como ASP.Net TextBox no expone un evento del lado del servidor para OnBlur, tendrá que hacerlo manualmente. Afortunadamente, esto es bastante fácil de lograr. Supongamos que tiene este pequeño fragmento de código en su página .aspx. Desea actualizar un servidor de control de etiquetas cuando el cuadro de texto pierda el foco.
<asp:Label ID="lblOnBlur" runat="server">On Blur Example</asp:Label><br />
<asp:TextBox ID="tbOnBlur" runat="server" ClientIDMode="Static" /><br />
<asp:Label ID="lblOutput" runat="server" />
ASP.Net ha construido en un client side function que es llamada para activar las devoluciones de datos que toma dos parámetros:
- destino (el ID del control haciendo que el evento)
- Argumento (información opcional que le gustaría transmitir al servidor)
usted podía simplemente wireup el evento en el marcado por añadir el siguiente atributo y valor a su Cuadro de texto:
onblur="__doPostBack('tbOnBlur','OnBlur');"
Sin embargo, el marco tiene una forma fácil de generar esta secuencia de comandos para que el lado del servidor. En el método de Page_Init, sólo tiene que añadir una llamada a GetPostBackEventReference
y asignarlo a la "onBlur" atributo para controlar de este modo:
protected void Page_Init(object sender, EventArgs e)
{
var onBlurScript = Page.ClientScript.GetPostBackEventReference(tbOnBlur, "OnBlur");
tbOnBlur.Attributes.Add("onblur", onBlurScript);
}
Con eventos de control de servidor estándar, el wireup evento y invocación es manejado automáticamente por usted implementando IPostBackEventHandler
. Eso es mucho trabajo para una solución única, así que permite manejarla manualmente inspeccionando los parámetros de solicitud.
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
var ctrlName = Request.Params[Page.postEventSourceID];
var args = Request.Params[Page.postEventArgumentID];
HandleCustomPostbackEvent(ctrlName, args);
}
}
private void HandleCustomPostbackEvent(string ctrlName, string args)
{
//Since this will get called for every postback, we only
// want to handle a specific combination of control
// and argument.
if (ctrlName == tbOnBlur.UniqueID && args == "OnBlur")
{
lblOutput.Text = "On Blur Event Handled Server Side!" + DateTime.Now;
}
}
Al final, no es muy difícil de simular eventos del lado del servidor, si no le importa la excavación en el marco un poco.
Espero que esto ayude!
Saludos,
Josh
if (!Page.IsPostBack)
{
txtName.Attributes.Add("onblur","alert('Hello world')");
}
Si desea que el servidor para hacer algo después de que el cuadro de texto pierde el foco puede agregar AutoPostBack = "True" y, si no se desea la devolución de datos para recargar la página entera, use un UpdatePanel:
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="true"
OnTextChanged="TextBox1_TextChanged" />
</ContentTemplate>
</asp:UpdatePanel>
La función TextBox1_TextChanged puede hacer algo con el texto (en el lado del servidor).
Fuera de interés - ¿cómo detener el UpdatePanel de la recarga de la página entera – Kamal
@Kamal ... no lo hace.Un panel de actualización no hace nada para evitar que la página completa se cargue en el servidor. Esencialmente, lo que sucede es que se realiza una devolución de datos del lado del cliente utilizando XmlHttpRequest y, a continuación, todos los contenidos, excepto el contenido de UpdatePanel, se descartan y devuelven. Alivia el "parpadeo" de una devolución de datos normal, pero no ahorra tiempo de procesamiento en el servidor. – Josh
Recarga toda la página, pero solo envía el html de los paneles de actualización y algunos javascript para actualizar los contenidos en la respuesta. La respuesta puede ser mucho menor que la descarga de toda la página y el navegador no tiene que volver a procesar la página. Esto puede acelerar un poco el proceso, el usuario no notará ningún parpadeo y la experiencia será mucho más suave. – Willem
¿Por qué no usar eso. LOSTFOCUS trabaja misma con:
OnTextChanged="TextBox_TextChanged"
- 1. Detectar UITextField Lost Focus
- 2. Evento ASP.NET TextBox LostFocus
- 3. ASP.Net textbox onblur evento
- 4. Cómo hacer Flash de la barra de tareas en Lost Focus
- 5. WPF DataGrid CellEditEnding - DataSet no está actualizando Till Row Lost Focus
- 6. ASP.NET GridView RowCommand TextBox vacío
- 7. jQuery: .select() y .focus() método diferencia
- 8. TFS History Lost
- 9. Lost Last Git Commit
- 10. Git lost commits
- 11. Manejo del botón ENTRAR en TextBox, ASP.NET
- 12. Método genérico para encontrar todos los controles TextBox en Silverlight
- 13. Renderizar el atributo de título para asp.net textbox
- 14. TextBox causa devolución de botón en ASP.NET
- 15. focus() para ingresar sin desplazarse
- 16. Use JQuery DatePicker en Textbox asp.net
- 17. ¿Cómo hacer un autocompletar TextBox en ASP.NET?
- 18. Jquery focus out evento
- 19. jquery focus no desencadena css focus
- 20. Multilínea para WPF TextBox
- 21. UITextField focus
- 22. WPF MVVM Focus Field on Load
- 23. WPF TextBox Intercepting RoutedUICommands
- 24. Gxt focus management
- 25. Custom Caret para WinForms TextBox
- 26. Evento de WinForms para el foco de TextBox?
- 27. selectText of NSTextField on focus
- 28. modalpopupextender y comas que aparecen en mi textbox asp.net
- 29. -moz-focus-inner
- 30. ¿Cómo establecer el centro de alineación en TextBox en ASP.NET?
+1 Josh. Eso fue muy informativo de hecho. –
Muchas gracias por su hermosa respuesta Genii. Tu publicación es muy informativa para mí. –
He visto muchas otras sugerencias sobre cómo lograr esto, y su respuesta es de lejos la mejor. ¡Gracias! – Aaron