如何为asp.net文本方法编写丢失焦点方法?请任何人有任何想法写这个,与我分享?
答案 0 :(得分:35)
所以我知道每个人都已经展示了基本的客户端方法,这很好,但我想至少展示一个解决方案来处理服务器上的特定客户端事件。
让我们看一下代码,然后逐一讨论。
由于ASP.Net TextBox不会为OnBlur公开服务器端事件,因此您必须手动执行此操作。幸运的是,这很容易实现。假设您的.aspx页面中有这么少的代码。每当TextBox失去焦点时,您都希望更新Label控制服务器端。
<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,可以调用它来触发带有两个参数的回发:
你可以通过在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;
}
}
最后,如果您不介意深入挖掘框架,那么模拟服务器端事件并不是非常困难。
希望这有帮助!
干杯,
约什
答案 1 :(得分:15)
如果您希望服务器在文本框失去焦点后执行某些操作,您可以添加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可以对文本(服务器端)执行某些操作。
答案 2 :(得分:4)
if (!Page.IsPostBack)
{
txtName.Attributes.Add("onblur","alert('Hello world')");
}
答案 3 :(得分:0)
为什么不使用它。 Lostfocus的作用与:
相同OnTextChanged="TextBox_TextChanged"