ASP.NET阻止双击

我之前看过这个,发现当我测试它时谷歌Chrome,Firefox和IE适用于我的JavaScript,但它似乎是随机的(或浏览器特定的)它不起作用。 我需要一个有效的解决方案。

这就是我目前使用的jQuery:

$(document).ready(function () { $("a.Once").one("click", function () { $(this).click(function () { return false; }); }); }); 

我将类“Once”添加到我想要确保不会多次单击的按钮。 同样,它总是适合我,但对于一些用户它根本不做任何事情。 是否有更好的替代解决方案始终有效?

更新:这些是ASP.NET LinkBut​​tons。

更新6/18:我从两个持续出现此问题的用户那里获得了更多信息。

一个说他按下按钮一次,屏幕闪烁,所以他离开页面然后回到它并再次点击按钮,这会导致它自动发布两次。

其他人声称他点击了一个不同的按钮,导致此按钮自动回发两次。 我查看了代码,该按钮没有任何问题。

我唯一能想到的是缓存问题,或者在页面加载完成之前点击按钮。 我无法重现问题,其中一个使用我使用的完全相同的浏览器。

如果这是表单post,那么您可以在提交时禁用所有提交按钮:

$('#someForm').submit(function(){ $('input[type=submit]', this).attr('disabled', 'disabled'); });
$('#someForm').submit(function(){ $('input[type=submit]', this).attr('disabled', 'disabled'); }); 

或者他们被允许点击多次,但只是经过一段时间后?

有些情况下one()失败 – 请参阅http://api.jquery.com/one/上的评论。任何想法,如果它的浏览器compat问题与您的用户或jQuery没有加载?

编辑:刚发现这是一个链接按钮。 在那种情况下试试

$('#yourClientIdForYourLinkButton').click(function(e) { e.preventDefault(); });
$('#yourClientIdForYourLinkButton').click(function(e) { e.preventDefault(); }); 

或直接使用clientid之类的东西

$('#<%=linkButton.ClientId%>').click(function(e) { e.preventDefault(); });
$('#<%=linkButton.ClientId%>').click(function(e) { e.preventDefault(); }); 

我已经尝试了很多JQuery选项,但这是我在c#中编写一个简单代码后的解决方法:

.aspx页面:

现在,您将此添加到Page_Load中的代码中:

  protected void Page_Load(object sender, EventArgs e) { ClientScriptManager cs = Page.ClientScript; ButtonID.Attributes.Add("onClick", "this.disabled=true;" + cs.GetPostBackEventReference(ButtonID, "").ToString()); } 

最后一件事:

  protected void ButtonID_Click(object sender, EventArgs e) { System.Threading.Thread.Sleep(5000); //rest of your code } 

希望这可以帮助!

post更新:

使用JavaScript,您可以在按钮单击的客户端事件中停止表单提交,当它第二次发生时

    

或者您可以在Postback的后端执行此操作:

 btnSubmit.Attributes.Add("onclick", " this.disabled = true; " + ClientScript.GetPostBackEventReference(btnSubmit, null) + ";"); 

您可以隐藏现有链接,然后放置一些文本,提醒用户该页面正在加载。

 Button  

另外,请考虑添加代码服务器端。 您永远不会指望启用JavaScript。

编辑:答案2.0

这真的取决于你的愿望。 一种选择是在单击后禁用锚标记。 这应该适用于所有浏览器。

我所看到的另一个选项是隐藏有问题的项目,ala http://www.ilovecolors.com.ar/avoid-double-click-jquery/ ,但这可能对你正在尝试的内容有些过分。