关于asp.net:防止意外双击按钮

关于asp.net:防止意外双击按钮

Preventing accidental double clicking on a button

我有一些继承自ASP.NET buttons并使用onserverclick的控件。

如果用户单击两次,该按钮将触发两个服务器端事件。 我该如何预防?

我尝试通过javascript单击(在onclick属性中)后设置this.disabled='true',但这也阻止了第一次回发。


请参阅此示例以禁用回发控制。它应该可以帮助您完成您要实现的目标。

http://encosia.com/2007/04/17/disable-a-button-control-during-postback/


如果有一个Updatepanel和一个FormView-Template内部的按钮,我将使用以下方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script type="text/javascript">
    // Using that prm reference, hook _initializeRequest
    Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(InitializeRequestBuchung);

    // Abfangen von Mehrfachklicks auf Buttons für asynchrone Postbacks im Updatepanel
    function InitializeRequestBuchung(sender, args) {
        var arrButtonIds = ["ButtonInsert","ButtonUpdate"];

        // Get a reference to the PageRequestManager.
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        if (prm.get_isInAsyncPostBack() & jQuery.inArray(args.get_postBackElement().id, arrButtonIds) > -1) {
            args.set_cancel(true);
        }
    }

如果当前异步回发仍处于活动状态,则会取消后续的回发。完美运作。


您不一定要显示回发时禁用的按钮。您要确保他们不会意外提交两次。因此,由于服务器端操作而禁用或隐藏按钮已经太晚了。至此,第二个请求已经在进行中。您需要使用javascript或确保服务器端代码不会运行两次。


将Button属性UseSubmitBehavior设置为false。然后创建一个禁用该按钮的OnClientClick函数。
它看起来像这样:

1
2
3
4
<script type="text/javascript">
   function disableFunctn(button){
       button.disabled = true;
   }

最快最便宜的方式:

1
 

除了隐藏之外,我所做的是使用javascript交换按钮。单击第一个按钮,即可显示另一个变灰的图像。


几天前,有人在这里的某个地方说过这一点,我同意-使用javascript只是隐藏按钮而不是禁用它;您可以在其位置显示"旋转"图像,以使用户知道发生了什么。


您也可以尝试例如btnSave.Enable = false;。单击按钮时以及单击事件例程中完成按钮处理之前。如果需要重置它以启用它,请使用单独的按钮重置该按钮以重新使用。

另一种方法是设置带有验证的按钮,以便询问用户是否要保存,该按钮应两次弹出。

还有一种方法是标记第一次出现,然后为第二次设置弹出窗口,以验证第二次或后续使用。


推荐阅读

    linux看用户信息命令?

    linux看用户信息命令?,系统,密码,信息,状态,软件,情况,命令,用户,网络,时间,l

    linux下删除用户命令?

    linux下删除用户命令?,系统,代码,邮箱,用户组,命令,用户,名称,管理,电脑,账

    用户id的linux命令?

    用户id的linux命令?,系统,密码,信息,联系方式,地址,位置,用户,命令,用户名,

    linux删除用户组命令?

    linux删除用户组命令?,管理,系统,密码,电脑,名称,用户,用户组,名字,信息,工

    linux下用户权限命令?

    linux下用户权限命令?,管理,系统,密码,地址,权限,时间,基础,信息,基本知识,

    linux登陆用户命令?

    linux登陆用户命令?,系统,工具,信息,地址,软件,工作,命令,数字,服务,名称,Lin

    linux用户名改名命令?

    linux用户名改名命令?,系统,密码,命令,代码,名称,用户名,用户,终端,主机名,

    linux用户分组命令?

    linux用户分组命令?,系统,命令,电脑,信息,时间,标准,资料,用户,文件,用户组,L

    linux命令改用户所属?

    linux命令改用户所属?,系统,文件,名称,用户组,命令,用户,名录,基本知识,所

    linux系统用户组命令?

    linux系统用户组命令?,系统,管理,密码,代码,用户组,用户,命令,邮箱,电脑,名

    linux用户管理的命令?

    linux用户管理的命令?,系统,管理,信息,地址,工作,用户,单位,基础,数据,命令,L

    linux用户退出命令行?

    linux用户退出命令行?,状态,档案,标准,系统,命令,文件,模式,编辑,指令,主机,l

    linux用户自定义命令?

    linux用户自定义命令?,系统,时间,标准,软件,项目,电脑,服务,工具,基本知识,

    linux用户组命令设置?

    linux用户组命令设置?,管理,系统,密码,代码,电脑,用户组,用户,软件,新增,命

    linux进入用户命令行?

    linux进入用户命令行?,系统,地址,工作,服务,信息,命令,首页,电脑,密码,终端,L

    linux用户用不了命令?

    linux用户用不了命令?,系统,档案,不了,命令,网络,密码,信息,情况,用户,权限,l

    linux新增用户组命令?

    linux新增用户组命令?,系统,密码,新增,用户组,联系方式,软件,邮箱,工具,管

    linux显示用户名命令?

    linux显示用户名命令?,密码,系统,信息,时间,地址,命令,用户,用户名,位置,用

    linux用户常用命令?

    linux用户常用命令?,工作,地址,系统,信息,管理,目录,命令,标准,基础,常用命

    linux登陆用户的命令?

    linux登陆用户的命令?,系统,密码,工作,用户,命令,代码,第三,信息,分时,用户