Как написать метод потерянного фокуса для текстового метода asp.net? Пожалуйста, у кого-нибудь есть идея написать это, поделитесь со мной?Метод потерянного фокуса для текстового поля asp.net?
ответ
Итак, я знаю, что каждый из них показал подход к базовой стороне клиента, и это нормально, но я хотел хотя бы показать решение для обработки конкретного события на стороне клиента на сервере.
Давайте взглянем на код и перейдем к нему по частям.
Поскольку ASP.Net TextBox не предоставляет серверное событие для OnBlur, вам придется делать это вручную. К счастью, этого довольно легко достичь. Предположим, у вас есть этот маленький бит кода на вашей странице .aspx. Вы хотите обновить сервер сервера управления Label всякий раз, когда 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 имеет встроенный client side function, который вызывается для запуска постбэки, которая принимает два параметра:
- Target (идентификатор управления вызывает событие)
- Аргумент (необязательная информация вы хотели бы передать на сервер)
вы могли только wireup события в разметке по добавив следующий атрибут и значение для вашего TextBox:
onblur="__doPostBack('tbOnBlur','OnBlur');"
Однако структура имеет легкий способ создания скрипта для вас стороны сервера. В вашем методе Page_Init, просто добавьте вызов GetPostBackEventReference
и назначить его на «ONBLUR» атрибут для вас контролировать, как так:
protected void Page_Init(object sender, EventArgs e)
{
var onBlurScript = Page.ClientScript.GetPostBackEventReference(tbOnBlur, "OnBlur");
tbOnBlur.Attributes.Add("onblur", onBlurScript);
}
С стандартными событиями управления сервером, то wireup события и вызов обрабатываются автоматически для вас осуществление 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;
}
}
В конце концов, это не очень трудно имитировать на стороне сервера событий, если вы не возражаете, роясь в рамках немного.
Надеюсь, это поможет!
Приветствия,
Джош
if (!Page.IsPostBack)
{
txtName.Attributes.Add("onblur","alert('Hello world')");
}
Если вы хотите, чтобы сервер сделать что-то после того, как текстовое поле теряет фокус вы можете добавить AutoPostBack = «True», и, если вы не хотите, постбэк перезагрузить всю страницу, используйте 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).
из интереса - как же UpdatePanel остановить перезагрузку всей страницы – Kamal
@Kamal ... это не так.Панель обновления не делает ничего, чтобы предотвратить загрузку всей страницы на сервере. По существу, происходит то, что postback выполняется на стороне клиента с помощью XmlHttpRequest, и затем все содержимое, содержащее UpdatePanel, отбрасывается и возвращается. Это облегчает «мерцание» нормальной обратной передачи, но не сохраняет обработку времени на сервере. – Josh
Он перезагружает всю страницу, но только отправляет html обновленной панели (ов) и некоторого javascript для обновления содержимого в ответе. Ответ может быть намного меньше, чем загрузка всей страницы, и браузер не должен повторно отображать страницу. Это может немного ускорить процесс, пользователь не заметит какого-либо мерцания, и опыт будет намного более плавным. – Willem
Почему вы не использовать. LostFocus работает так же с:
OnTextChanged="TextBox_TextChanged"
- 1. Установить фокус элемента из его потерянного фокуса
- 2. Обнаружение потерянного фокуса для NSTableView в какао
- 3. C# делегированный метод потерянные поля классов/поля потерянного поля события
- 4. Обновление updatepanel на основе фокуса texbox, потерянного в asp.net
- 5. MS Access - при вычислении потерянного фокуса
- 6. Tk/Tkinter: обнаружение приложения потерянного фокуса
- 7. Как вызвать метод на стороне сервера при потере фокуса из текстового поля, asp.net mvc
- 8. Javascript текстового поля фокуса отключить блок
- 9. Проверка подлинности текстового поля, проблема переключения фокуса
- 10. Настройка фокуса для текстового поля, когда функция называется
- 11. Отсутствие текстового поля после повторного фокуса
- 12. Как изменить цвет фокуса текстового поля?
- 13. Настройка фокуса на кнопку из текстового поля?
- 14. Фокуса текстового поля после проверки флажка
- 15. Потеря фокуса текстового поля в Silverlight
- 16. Настройка фокуса внутри текстового поля не работает
- 17. Выбор конкретного текстового поля для фокуса для Windows Phone 8
- 18. Android: для цикла обработки потерянного фокуса на полях TextEdit
- 19. Дата текстового поля asp.net
- 20. LostFocus Событие текстового поля в xcode
- 21. RegEx для многострочного текстового поля ASP.NET
- 22. onchange для текстового поля asp.net не работает
- 23. Заполнителя для текстового поля в ASP.net
- 24. Очистка текстового поля для пароля в ASP.NET
- 25. C# Методы проверки Asp.net для текстового поля?
- 26. ASP.NET SQL для равного ввода текстового поля
- 27. Использование URL для заполнения текстового поля ASP.Net
- 28. IP-маскирование для текстового поля в asp.net?
- 29. Обработчик события фокуса для текстового поля и выпадающего списка с использованием веб-приложения asp.net
- 30. Добавление текстового поля asp.net BehaviorID
+1 Джош. Это было очень информативно. –
Большое спасибо за ваш прекрасный ответ Genii. Ваш пост очень информативен для меня. –
Я видел несколько других предложений о том, как это сделать, и ваш ответ, безусловно, лучший. Благодаря! – Aaron