防止相同的功能发射两次

时间:2015-08-27 18:15:32

标签: javascript jquery ajax

我正在使用jquery的bPopup()来打开一个模态窗口。当用户单击按钮时,jquery会加载ajax页面,然后显示模态窗口。由于加载页面时的这种小延迟,按钮保持活动状态,如果用户点击两次,它将触发两次,向服务器发出两个ajax请求并打开两个窗口。

有没有一种简单的方法可以防止这种情况发生?由于这是一个相对常见的问题,我想知道专业人士是否有一种“正确”的方式处理它。

我尝试将弹出窗口设置为window.object,以便在第二次调用时覆盖它,但它仍然会打开两个弹出窗口。

1 个答案:

答案 0 :(得分:1)

这取决于你之后的用户体验,但我建议你禁用该按钮。

这样您的用户就会:

  1. 知道点击是"已注册"。
  2. 不要再次尝试点击。
  3. 不会崩溃/混淆您的代码。
  4. 修改
    根据评论,&#34;按钮&#34;实际上不是<button>,而是带有onclick处理程序的元素。所以:

    1. 您可以通过撤消设置它所做的操作来禁用点击处理程序(removeEventHandleronclick=null ...),但是一旦弹出,您就必须将其设置为完成了,这可能很烦人。
    2. 您必须以某种方式操纵UI以指示按钮被单击并被禁用。使用CSS类可能很简单。
    3. 但实际上,你可能最好拥有2&#34;版本&#34;您的按钮元素(<div> ...),一次只能显示1个,另一个隐藏在display: none之内。 &#34;点击&#34;版本不应该设置单击事件处理程序。然后,当单击该按钮时,您立即在2之间切换(可以使用单个CSS类完成),一旦弹出完成,切换回来。