asp.net文本框的丢失焦点方法?

如何为asp.net文本方法编写丢失焦点方法? 请任何人有任何想法写这个,与我分享?

所以我知道每个人都已经展示了基本的客户端方法,这很好,但我想至少展示一个解决方案来处理服务器上的特定客户端事件。

让我们来看看代码,然后逐一讨论。

由于ASP.Net TextBox不会为OnBlur公开服务器端事件,因此您必须手动执行此操作。 幸运的是,这很容易实现。 假设您的.aspx页面中有这么少的代码。 每当TextBox失去焦点时,您都​​希望更新Label控制服务器端。

On Blur Example

ASP.Net有一个内置的客户端函数 ,可以调用它来触发带有两个参数的回发:

  1. 目标(导致事件的控件的ID)
  2. 参数(您希望传递给服务器的可选信息)

可以通过将以下属性和值添加到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); } 

使用标准服务器控件事件,可以通过实现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; } } 

最后,如果您不介意深入挖掘框架,那么模拟服务器端事件并不是非常困难。

希望这可以帮助!

干杯,
玩笑

如果您希望服务器在文本框失去焦点后执行某些操作,则可以添加AutoPostback =“True”,如果您不希望回发重新加载整个页面,请使用UpdatePanel:

        

然后函数TextBox1_TextChanged可以对文本(serverside)执行某些操作。

 if (!Page.IsPostBack) { txtName.Attributes.Add("onblur","alert('Hello world')"); } 

你为什么不用它呢? Lostfocus的工作原理与:

 OnTextChanged="TextBox_TextChanged"