需要解决方法SetEnabled(false)使用DevExpress按钮停止e.processOnServer

时间:2014-07-23 20:02:09

标签: javascript devexpress

我在我的网页上使用DevExpress ASPxButton,需要一种方法来阻止用户双击该按钮。我最初的想法是尝试:

    function OnClick(s, e) {
        s.SetEnabled(false);
        e.processOnServer;
    }

不幸的是,我发现当您禁用按钮时,DevExpress会停止触发所有服务器端事件。所以我继续做了一些谷歌搜索并最终在DevExpress网站上(有时令人愤怒无益)这给了一个官方"解决方案#34;他们在其网站上的其他帮助主题中引用了这个问题。 Here是供参考的链接。

对于不愿意点击该链接的人,他们建议:

    var buttonClicked = false;
    function MyBtnClick(s,e){
        if(buttonClicked) return;
        buttonClicked = true;
        // do something
    }

我变成了:

    var buttonClicked = false;
    function OnClick(s, e) {
        if (buttonClicked) return;
        buttonClicked = true;
        e.processOnServer;
    }

起初我认为这是有效的,但后来意识到它适用于双击,但如果用户第三次点击,它就会继续并再次处理。对于什么应该是一个简单的任务,我似乎很难用这个(授予我相对较新的JavaScript,所以也许答案很明显)。如果有人知道第一次点击后禁用按钮的方法,同时仍然允许它第一次在服务器上处理,那么将不胜感激。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

如何实现它是一种简单的方法。 在click事件上,您需要包装按钮表。

function SaveButtonClick(s,e) {
// Disable Save button in order not to click twice 
$("#" + s.uniqueID).wrap("<span style='pointer-even: none; opacity: 0.5;'> </span>");
if (ValidationSummary) {
      e.processOnServer = true;
}
else {
    e.processOnServer = false;
    // Enable Save button
    $("#" + s.uniqueID).unwrap();

  }
}

这是我认为最简单的方式。