您还可以使用JQuery One 事件。
我发现我可以通过快速双击来绕过大多数防止双击的防护措施。使用一个事件是确保事件只被触发一次的唯一真正方法。我认为这种技术不会在输入 type=submit 标记的情况下“开箱即用”。相反,您可以简单地使用输入 type=button 或JQueryUI 的 .button()。
$("#submitButton").one("click", function(event) {
$('#theForm').submit();
});
如果您需要在验证错误(或其他情况)上重新连接事件,我建议您为事件处理程序创建一个函数。此示例中不需要该函数,因为事件处理程序所做的只是提交表单,但在更复杂的场景中,您可能希望避免重复自己。
function submitClick(event) {
$('#theForm').submit();
}
$("#submitButton").one('click', function(event) {
submitClick(event);
});
// This handler will re-wire the event when the form is invalid.
$('#theForm').submit(function(event) {
if (!$(this).valid()) {
event.preventDefault();
$('#submitButton').one('click', function(event) { submitClick(event); });
}
});
如果您想向用户提供按钮不再起作用的反馈,您显然可以在此处添加禁用代码。使用 One 事件的一个很好的副作用是您实际上不必禁用按钮,您可以使用自己的样式。
function submitClick(event) {
$('#submitButton').addClass('disabledButton');
$('#theForm').submit();
}
$("#submitButton").one('click', function(event) {
submitClick(event);
});
// This handler will re-wire the event when the form is invalid.
$('#theForm').submit(function(event) {
if (!$(this).valid()) {
event.preventDefault();
$('#submitButton').one('click', function(event) { submitClick(event); });
$('#submitButton').removeClass('disabledButton');
}
});
JQuery 一事件: http ://api.jquery.com/one/