我在我的网页上使用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,所以也许答案很明显)。如果有人知道第一次点击后禁用按钮的方法,同时仍然允许它第一次在服务器上处理,那么将不胜感激。
答案 0 :(得分:1)
如果您可以查看以下链接,我搜索了您的问题的一些选项:
http://www.devexpress.com/Support/Center/Question/Details/Q438771
http://www.devexpress.com/Support/Center/Question/Details/Q273711
http://www.devexpress.com/Support/Center/Question/Details/B132082
答案 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();
}
}
这是我认为最简单的方式。