Jquery ASP.NET阻止双击

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; }); })

我以前看过这篇文章,当我测试它时,发现javascript可以与Google Chrome、Firefox和IE一起使用,但它似乎是随机的(或特定于浏览器的)不起作用。我需要一个可行的解决方案

这是我目前在jQuery中使用的:

$(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);我注意到有一次我按下按钮,它什么也没做,好像它已经是空的,尽管它本不应该是空的。表格从未提交。做