Come scrivere Metodo di messa a fuoco persa per il metodo di testo asp.net? Per favore qualcuno ha qualche idea di scrivere questo, condividere con me?Metodo Lost Focus per la casella di testo asp.net?
risposta
Quindi so che tutti hanno mostrato l'approccio client di base, e va bene, ma volevo almeno mostrare una soluzione per gestire un evento lato client specifico sul server.
Consente di dare un'occhiata al codice e di esaminarlo pezzo per pezzo.
Poiché ASP.Net TextBox non espone un evento lato server per OnBlur, sarà necessario farlo manualmente. Fortunatamente questo è abbastanza facile da raggiungere. Supponiamo di avere questo piccolo pezzetto di codice nella tua pagina .aspx. Si desidera aggiornare un lato del server di controllo Label ogni volta che il TextBox perde lo stato attivo.
<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 è dotato di un client side function che viene chiamato per innescare postback che prende due parametri:
- di destinazione (l'ID del controllo che causa l'evento)
- Argument (informazioni facoltative si desidera passare al server)
È potrebbe solo wireup l'evento nel markup per aggiungendo il seguente attributo e valore alla vostra TextBox:
onblur="__doPostBack('tbOnBlur','OnBlur');"
Tuttavia, il quadro ha un modo semplice per generare questo script per voi lato server. Nel metodo Page_Init, è sufficiente aggiungere una chiamata a GetPostBackEventReference
e assegnarlo al "onblur" attributo per controllare in questo modo:
protected void Page_Init(object sender, EventArgs e)
{
var onBlurScript = Page.ClientScript.GetPostBackEventReference(tbOnBlur, "OnBlur");
tbOnBlur.Attributes.Add("onblur", onBlurScript);
}
Con gli eventi di controllo del server standard, il wireup evento e l'invocazione è gestito automagicamente per voi da che implementa IPostBackEventHandler
. È molto lavoro per una soluzione una tantum, quindi lascia che sia gestita manualmente ispezionando i parametri della richiesta.
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;
}
}
Alla fine non è terribilmente difficile da simulare eventi lato server, se non ti dispiace scavare nel quadro un po '.
Spero che questo aiuti!
Cheers,
Josh
if (!Page.IsPostBack)
{
txtName.Attributes.Add("onblur","alert('Hello world')");
}
Se si desidera che il server di fare qualcosa dopo la casella di testo perde lo stato attivo è possibile aggiungere AutoPostBack = "True" e, se non si desidera che il postback per ricaricare l'intera pagina, utilizzare 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 funzione TextBox1_TextChanged può quindi eseguire un'operazione con il testo (serveride).
Fuori di interesse - come fa l'UpdatePanel fermare il ricaricamento della pagina intera – Kamal
@Kamal ... non è così.Un pannello di aggiornamento non fa nulla per impedire il caricamento dell'intera pagina sul server. In sostanza, ciò che accade è che un postback viene eseguito lato client utilizzando XmlHttpRequest e quindi tutti tranne il contenuto di UpdatePanel vengono gettati e restituiti. Allevia lo "sfarfallio" di un normale postback, ma non risparmia tempo sul server. – Josh
Ricarica l'intera pagina ma invia solo l'html del/i updatepanel (i) e alcuni javascript per aggiornare i contenuti nella risposta. La risposta può essere molto più piccola rispetto al download dell'intera pagina e il browser non deve re-renderizzare la pagina. Questo può velocizzare il processo un po ', l'utente non noterà alcun sfarfallio e l'esperienza sarà molto più agevole. – Willem
Perché non si utilizza questo. LostFocus funziona stesso con:
OnTextChanged="TextBox_TextChanged"
- 1. Rimuovi focus sulla prima casella di testo
- 2. Come posso disattivare il funzionamento del validatore di campo richiesto ASP.NET "lost focus"
- 3. Sapere chi ha il focus su un evento Lost Focus
- 4. Come rendere Flash Taskbar su Lost Focus
- 5. Focus cursore sulla casella di testo in WPF/C#
- 6. asp.net ValidateRequest = false per casella di testo anziché per pagina?
- 7. Cerca script nella casella di testo asp.net
- 8. aumenta la dimensione della casella di testo bootstrap (ASP.NET MVC)
- 9. Rendere la casella di testo nascosta in ASP.NET
- 10. casella di testo ASP.NET perde testo su postback parziale
- 11. Attributo titolo titolo per casella di testo asp.net
- 12. Segnaposto/Testo di esempio nella casella di testo per l'utente
- 13. Ottenere testo da asp: casella di testo
- 14. Come cancellare una casella di testo onfocus?
- 15. focus to text box
- 16. Lettura del valore della casella di testo ASP.NET con JavaScript
- 17. C# - come impostare il testo nella casella di testo per mostrare un suggerimento quando la casella di testo è vuota?
- 18. Aggiornamento casella di testo durante la digitazione
- 19. Come stile casella di testo utilizzando CSS in ASP.NET
- 20. ASP.NET campo nascosto vs casella di testo invisibile
- 21. Come assegnare proprietà focus alla casella di testo in Ruby on Rails?
- 22. Manca "KeyPress" per la casella di testo WinForms?
- 23. C# Ridimensiona la casella di testo per adattarla al contenuto
- 24. cambia automaticamente la direzione del testo della casella di testo
- 25. Per ogni loop della casella di testo
- 26. Jquery convalida vuota per casella di testo
- 27. ASP.NET: la casella di testo di convalida contiene un numero intero maggiore di uguale a zero?
- 28. spark executor lost failure
- 29. JQuery si concentra sulla prima casella di testo o area di testo quando la pagina viene caricata
- 30. Lost Last Git Commit
+1 Josh. Questo è stato davvero molto istruttivo. –
Grazie mille per la tua bellissima risposta Genii. Il tuo post è molto informativo per me. –
Ho visto molti altri suggerimenti su come ottenere questo risultato e la tua risposta è di gran lunga la migliore. Grazie! – Aaron