Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自动回写防止按钮单击_C#_Html_Asp.net_Events - Fatal编程技术网

C# 自动回写防止按钮单击

C# 自动回写防止按钮单击,c#,html,asp.net,events,C#,Html,Asp.net,Events,我有一个asp.net页面,上面有许多控件,包括: 一个带有autopostback=true的文本框,并实现了服务器端textchanged事件 实现了服务器端单击事件的按钮 一旦用户离开控件(即焦点丢失),文本框就会执行回发。问题是,如果用户碰巧更改了值,然后在不离开文本框的情况下按下按钮,则单击按钮时文本框将执行回发,但按钮单击将丢失 在这种情况下,如何强制文本框和按钮事件连续触发 谢谢试试: ASPX: 您可以延迟从文本框回发,并在单击按钮时取消回发。要执行此操作,请将下面的代码添加到P

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

  • 一个带有
    autopostback=true
    的文本框,并实现了服务器端
    textchanged
    事件

  • 实现了服务器端单击事件的按钮

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

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

    谢谢

    试试:

    ASPX:


    您可以延迟从文本框回发,并在单击按钮时取消回发。要执行此操作,请将下面的代码添加到
    Page\u 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, ""));
    }
    

    用户如何单击按钮而不离开文本框?按钮单击始终强制将焦点保留在文本框上,并将焦点设置为按钮。。。您可以尝试在请求之前添加一些延迟…我的意思是,他在按下按钮之前不会离开文本框。ie只要他点击按钮,焦点就会消失,文本框就会自动返回。但是按钮单击事件不会触发,然后为两个控件指定相同的事件名称
    function EnterEvent(e) {
            if (e.keyCode == 13) {
                __doPostBack('<%=Button1.UniqueId%>', "");
            }
        }
    
    protected void Button1_Click1(object sender, EventArgs e)
        {
    
        }
    
    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, ""));
    }