禁用双击适用于 Firefox,但不适用于 Chrome

Disabling double click works on Firefox, but does not work on Chrome

我需要防止在发布表单时双击 asp.net 按钮。

我尝试了以下 jQuery 代码:

        $(this).submit(function () {
            $('.btn').prop("disabled", "disabled");
        });

它在 Firefox 浏览器中有效,但在 Chrome 中无效。

这是我的 asp.net 按钮的 HTML:

<form name="aspnetForm" method="post" action="reset-password.aspx" id="aspnetForm">
<div class="orangeBTN">
    <input type="button" name="ctl00$ctl00$content$content$btnSubmit" value="Submit" onclick="javascript:__doPostBack(&#39;ctl00$ctl00$content$content$btnSubmit&#39;,&#39;&#39;)" id="ctl00_ctl00_content_content_btnSubmit" class="btn pri" />
</div>
</form>

有没有我可以使用的简单通用方法?

非常感谢您的帮助。

更新我

我包括了 .aspx html 和现在似乎对我有用的 JavaScript。

<asp:Panel ID="pnlInput" CssClass="pnlInput" runat="server">
    <fieldset id="resetPassRight">
        <asp:Panel ID="pButtons" runat="server" CssClass="buttons">
            <asp:Button ID="btnSubmit" Text="Submit" CssClass="btn pri" runat="server" />
        </asp:Panel>
    </fieldset>
</asp:Panel>

JavaScript:

<script type="text/javascript">
    $(document).ready(function () {
        $('.pnlInput fieldset .btn').one('click', function () {
        $(this).trigger("click");
        $(this).attr('disabled', 'disabled');
        });
    });
</script>

更新二

下面是我最终使用的 jQuery 代码。到目前为止,我认为它有效。

        /** Start - This jQuery will disable double click */
        $('.pnlInput fieldset .btn').one('click', function () {
            $(this).trigger("click");
            $(this).attr("disabled", 'disabled');               
        });
        /** End - This jQuery will disable double click */

jQuery 未执行的原因之一是 asp 按钮的 属性 为:

UseSubmitBehavior="false"

这会阻止客户端代码在不同浏览器中正确评估。

您可以尝试使用 .attr() 而不是 .prop()

如果输入有一个 type="button" 它不会触发提交功能(即使在 FF 上也不会,或者至少我无法得到它),正如你在这个 fiddle:http://jsfiddle.net/4ye9921e/(将目标替换为空函数以避免错误)

如果您将输入更改为 type="submit",则将触发提交功能并禁用该按钮。你可以在另一个fiddle上看到它:http://jsfiddle.net/4ye9921e/1/

所以,只要把input改成submit,就会触发onsubmit事件了。

对我来说很管用。 __doPostBack( $(this).attr('name'), '') 需要 Chrome。

 <asp:Button ID="Btn_AjouterFichier" runat="server" Text="Ajouter photo" CssClass="singleclick" />

$('.singleclick').click(function () {
        $(this).attr('disabled', 'disabled');
        __doPostBack( $(this).attr('name'), '')
});