禁用双击适用于 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('ctl00$ctl00$content$content$btnSubmit','')" 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'), '')
});
我需要防止在发布表单时双击 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('ctl00$ctl00$content$content$btnSubmit','')" 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'), '')
});