Как написать метод Lost focus для текстового метода asp.net? Пожалуйста, у кого-нибудь есть идея написать это, поделитесь со мной?
Метод Lost Focus для текстового поля asp.net?
Ответ 1
Итак, я знаю, что каждый показал базовый подход на стороне клиента, и это нормально, но я хотел хотя бы показать решение для обработки определенного события на стороне клиента на сервере.
Давайте взглянем на код и перейдем к нему по частям.
Так как ASP.Net TextBox не выставляет серверное событие для OnBlur, вам придется делать это вручную. К счастью, этого довольно легко достичь. Предположим, у вас есть этот маленький бит кода на вашей странице .aspx. Вы хотите обновить сервер сервера управления ярлыками всякий раз, когда TextBox теряет фокус.
<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 встроена функция клиентская функция, которая вызывается для запуска обратных передач, которая принимает два параметра:
- Цель (идентификатор элемента управления, вызывающего событие)
- Аргумент (дополнительная информация, которую вы хотели бы передать на сервер)
Вы можете просто подключить событие к разметке, добавив в свой TextBox следующий атрибут и значение:
onblur="__doPostBack('tbOnBlur','OnBlur');"
Однако структура имеет простой способ сгенерировать эту script для вас серверную сторону. В методе Page_Init просто добавьте вызов GetPostBackEventReference
и назначьте его атрибуту onblur для управления таким образом:
protected void Page_Init(object sender, EventArgs e)
{
var onBlurScript = Page.ClientScript.GetPostBackEventReference(tbOnBlur, "OnBlur");
tbOnBlur.Attributes.Add("onblur", onBlurScript);
}
При стандартных событиях управления сервером автоматическая обработка событий и обращение к событиям осуществляется с помощью IPostBackEventHandler
. Это большая работа для одноразового решения, поэтому давайте просто обрабатываем его вручную, проверяя параметры запроса.
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;
}
}
В конце концов, не очень сложно симулировать события на стороне сервера, если вы не возражаете немного вникать в структуру.
Надеюсь, это поможет!
Cheers,
Джош
Ответ 2
Если вы хотите, чтобы сервер сделал что-то после того, как текстовое поле теряет фокус, вы можете добавить AutoPostback = "True" и, если вы не хотите, чтобы postback перезагружал всю страницу, используйте 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>
Функция TextBox1_TextChanged может затем что-то сделать с текстом (serveride).
Ответ 3
if (!Page.IsPostBack)
{
txtName.Attributes.Add("onblur","alert('Hello world')");
}
Ответ 4
Почему бы вам не использовать это. Lostfocus работает так же:
OnTextChanged="TextBox_TextChanged"