Jquery ASP.NET阻止双击
我以前看过这篇文章,当我测试它时,发现javascript可以与Google Chrome、Firefox和IE一起使用,但它似乎是随机的(或特定于浏览器的)不起作用。我需要一个可行的解决方案 这是我目前在jQuery中使用的:Jquery ASP.NET阻止双击,jquery,asp.net,double-click,Jquery,Asp.net,Double Click,我以前看过这篇文章,当我测试它时,发现javascript可以与Google Chrome、Firefox和IE一起使用,但它似乎是随机的(或特定于浏览器的)不起作用。我需要一个可行的解决方案 这是我目前在jQuery中使用的: $(document).ready(function () { $("a.Once").one("click", function () { $(this).click(function () { return false; }); })
$(document).ready(function () {
$("a.Once").one("click", function () {
$(this).click(function () { return false; });
});
});
我将类“Once”添加到按钮中,以确保按钮不会被多次单击。同样,它对我来说总是正常工作,但对一些用户来说,它根本不起任何作用。是否有更好的替代方案始终有效
更新:这些是ASP.NET链接按钮
更新6/18:
我从两个一直有这个问题的用户那里得到了更多的信息
一个说他点击按钮一次,屏幕就会闪烁,所以他离开页面,回到页面,再次点击按钮,导致页面自动发布两次
另一个声称他点击了另一个按钮,导致该按钮自动回发两次。我看了代码,那个按钮没有问题
我唯一能想到的就是缓存问题,或者在页面加载完成之前点击按钮。我无法重现该问题,其中一个问题是使用与我使用的浏览器完全相同的浏览器。如果这是用于表单发布,则您可以使用以下选项禁用提交时的所有提交按钮:
$('#someForm').submit(function(){
$('input[type=submit]', this).attr('disabled', 'disabled');
});
或者,是否允许他们多次单击,但只能在经过一段时间后单击
有些情况下one()会失败-请参阅
你知道这是用户的浏览器兼容性问题还是jQuery没有加载吗
编辑:
刚发现这是一个链接按钮。那样的话,试试看
$('#yourClientIdForYourLinkButton').click(function(e) {
e.preventDefault();
});
或者直接使用clientid,比如
$('#<%=linkButton.ClientId%>').click(function(e) {
e.preventDefault();
});
$('#')。单击(函数(e){
e、 预防默认值();
});
如果这是针对表单帖子,则可以使用以下选项禁用提交时的所有提交按钮:
$('#someForm').submit(function(){
$('input[type=submit]', this).attr('disabled', 'disabled');
});
或者,是否允许他们多次单击,但只能在经过一段时间后单击
有些情况下one()会失败-请参阅
你知道这是用户的浏览器兼容性问题还是jQuery没有加载吗
编辑:
刚发现这是一个链接按钮。那样的话,试试看
$('#yourClientIdForYourLinkButton').click(function(e) {
e.preventDefault();
});
或者直接使用clientid,比如
$('#<%=linkButton.ClientId%>').click(function(e) {
e.preventDefault();
});
$('#')。单击(函数(e){
e、 预防默认值();
});
您可以隐藏现有链接,然后放置一些文本,提醒用户页面正在加载
<asp:LinkButton CssClass="Once" runat="server">Button</asp:LinkButton>
<script type="text/javascript">
$(document).ready(function ()
{
$("a.Once").one("click", function (event)
{
$(this).hide().after("Please wait while we load your page...");
});
});
</script>
按钮
$(文档).ready(函数()
{
$(“a.Once”).one(“单击”),函数(事件)
{
$(this).hide().after(“请稍候,我们正在加载您的页面…”);
});
});
也可以考虑添加代码服务器端。您永远不能指望启用JavaScript
编辑:Answer 2.0您可以隐藏现有链接,然后放置一些文本,提醒用户页面正在加载
<asp:LinkButton CssClass="Once" runat="server">Button</asp:LinkButton>
<script type="text/javascript">
$(document).ready(function ()
{
$("a.Once").one("click", function (event)
{
$(this).hide().after("Please wait while we load your page...");
});
});
</script>
按钮
$(文档).ready(函数()
{
$(“a.Once”).one(“单击”),函数(事件)
{
$(this).hide().after(“请稍候,我们正在加载您的页面…”);
});
});
也可以考虑添加代码服务器端。您永远不能指望启用JavaScript
编辑:答案2.0这取决于你的愿望。一个选项是在单击锚定标记后禁用它。这应该适用于所有浏览器
我看到的另一个选项是隐藏有问题的物品,ala,但这可能会对你的尝试造成过度伤害。这取决于你的意愿。一个选项是在单击锚定标记后禁用它。这应该适用于所有浏览器
我看到的另一个选项是隐藏有问题的项,ala,但这可能会对您的尝试造成过度伤害。我使用JQuery尝试了许多选项,但在用c#编写了一个简单代码后,我就是这样解决的: .aspx页面: 现在,将此添加到页面加载中的代码中:
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
}
希望这有帮助
帖子更新:
使用JavaScript,您可以在第二次发生按钮单击的客户端事件时停止表单提交
<script type="text/javascript">
var isSubmitted = false;
function preventMultipleSubmissions() {
if (!isSubmitted) {
$('#<%=btnSubmit.ClientID %>').val('Submitting.. Plz Wait..');
isSubmitted = true;
return true;
}
else {
return false;
}
}
</script>
<asp:LinkButton ID="btnSubmit" runat="server" Text="Submit" OnClientClick="return preventMultipleSubmissions();" OnClick="btnSubmit_Click" />
我用JQuery尝试了许多选项,但在用c#编写了一个简单的代码之后,我就是这样解决的: .aspx页面: 现在,将此添加到页面加载中的代码中:
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
}
希望这有帮助
帖子更新:
使用JavaScript,您可以在第二次发生按钮单击的客户端事件时停止表单提交
<script type="text/javascript">
var isSubmitted = false;
function preventMultipleSubmissions() {
if (!isSubmitted) {
$('#<%=btnSubmit.ClientID %>').val('Submitting.. Plz Wait..');
isSubmitted = true;
return true;
}
else {
return false;
}
}
</script>
<asp:LinkButton ID="btnSubmit" runat="server" Text="Submit" OnClientClick="return preventMultipleSubmissions();" OnClick="btnSubmit_Click" />
当你说“双击”时,你的意思是不止一次地、永远地单击一个元素,还是UI手势“双击”?多次单击按钮。有些人是双击者。这是一个ASP.NET链接按钮。我可能应该提到这一点。当你说“双击”时,你是指多次单击某个元素,还是指UI手势“双击”?多次单击按钮。有些人是双击者。这是一个ASP.NET链接按钮。我可能应该提到这一点。昨天我把href改为#,不喜欢结果。我可能应该一起删除href标签?第二次点击时没有任何事情发生是首选。昨天我将href改为#,不喜欢结果。我可能应该一起删除href标签?第二次单击时不发生任何事情是首选。它实际上是一个ASP.NET链接按钮,因此它有一个href=。昨天我将href值改为#,但我不喜欢这样的结果。现在我想起来了,我应该把它改为:javascript:void(0);我认为jQuery就是问题所在。我没有禁用,而是将href改为javascript:void(0);我注意到有一次我按下按钮,它什么也没做,好像它已经是空的,尽管它本不应该是空的。表格从未提交。做