Autopostback可防止按钮单击

时间:2013-10-24 08:20:31

标签: c# html asp.net events

我有一个asp.net页面,其上有许多控件,包括:

  1. 包含autopostback = true和服务器端textchanged事件的文本框

  2. 实施了服务器端点击事件的按钮

  3. 一旦用户离开控件,文本框就会执行回发(即焦点丢失)。问题是,如果用户碰巧更改了值,然后按下按钮而不离开文本框,则在按钮上单击文本框将执行回发,但按钮单击将丢失。

    在这种情况下,如何强制文本框和按钮事件连续触发?

    由于

2 个答案:

答案 0 :(得分:1)

尝试:

ASPX:

<asp:TextBox ID="TextBox1" clientidmode="Static" runat="server" onkeypress="return EnterEvent(event)"></asp:TextBox>    
<asp:Button ID="Button1" runat="server" style="display:none" Text="Button" />

JS:

function EnterEvent(e) {
        if (e.keyCode == 13) {
            __doPostBack('<%=Button1.UniqueId%>', "");
        }
    }

CS:

protected void Button1_Click1(object sender, EventArgs e)
    {

    }

答案 1 :(得分:0)

您可以延迟从文本框回发并在按钮单击时取消它。为此,请将以下代码添加到Page_PreRender方法:

protected void Page_PreRender(object sender, EventArgs e)
{
    Button1.OnClientClick = string.Format("if(window.{0}Timeout){{ clearTimeout(window.{0}Timeout); }}", 
        TextBox1.ClientID);

    TextBox1.Attributes["onChange"] = string.Format("javascript:window.{0}Timeout = setTimeout(\"{1}\", 500); return;", 
        TextBox1.ClientID, 
        ClientScript.GetPostBackEventReference(TextBox1, ""));
}