2009-09-08 76 views
0

我们有一个以.NET和jQuery构建的网站。我们有定制的jQuery来调用处理ASP.NET页面上的加载方法。 ajax调用是在点击处理程序中触发的,例如,当点击jQuery时禁用点击处理程序

$("#Submit").click(function(){ 
    $(a_selector).load("Process.aspx?data=" + someDataObject, null, function(){ 
    alert("Done")}); 
    } 
    return false; 
); 

我们的问题是当我们点击#Submit按钮时,点击被触发,调用ajax来处理它。人们似乎是双击该按钮,因此我们从双击中获得数据库中的多个结果。有没有人有关于如何防止这个问题的想法?我认为像通过JS禁用按钮,但我想知道其他想法。

+1

什么与失效按钮的想法是错的? – waqasahmed 2009-09-08 17:08:20

回答

0

stop propagation

$("#Submit").click(function(event){ 
    event.stopPropagation(); 

    if (typeof $_submitSend == "undefined") 
     var $_submitSend = true; 
    else if ($_submitSend == true) 
     return false; 

    $_submitSend = true; 

    $(this).attr("disabled", "disabled"); 

    $(a_selector).load("Process.aspx?data=" + someDataObject, null, function(){ 
    alert("Done")}); 
    $_submitSend = false; 
    $(this).removeAttr("disabled"); 
    } 
); 
2

使用jQuery的one function。这样,该活动只会被解雇一次。当然,你也应该禁用按钮,以便用户知道点击它是徒劳的。此外,还可以显示微调器,进度条或更改光标样式,以向用户指示发生了某些情况并且系统未卡住。

0
$("#Submit").click(function(){ 
    $(a_selector).removeClass("class").load("Process.aspx?data=" + someDataObject, null, function(){ 
    $(this).addClass("class"); 
    alert("Done")}); 
    } 
    return false; 
); 

然后只需添加一些特定的类,而不需要任何样式,您将用作选择器。不知道这是否会工作,你所希望的方式,但它看起来像我的简单的解决方案... :)