我是Jquery的新手,我的问题是我可以延迟点击提交按钮,例如,提交后您无法单击提交按钮1秒钟,因此我可以阻止提交按钮上的点击垃圾邮件
这是我的Click事件
$("#btnConfirmEditNo").click(function (e) {
e.preventDefault();
$('#editContactForm').validationEngine('hide');
editwnd.close();
});
也尝试了settimeout()
,但它延迟了关闭窗口
答案 0 :(得分:2)
此示例可能对您有所帮助:
function handleClick(evt) {
$( "#btn" ).prop( "disabled", true );
setTimeout(function() {
$( "#btn" ).prop( "disabled", false );
$('#btn').on('click', handleClick);
}, 1000);
$( this ).off( event );
}
$('#btn').on('click', handleClick);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btn">Click Me</button>
function handleClick(evt) {
$( "#btn" ).prop( "disabled", true );
setTimeout(function() {
$( "#btn" ).prop( "disabled", false );
$('#btn').one('click', handleClick);
}, 1000);
}
$('#btn').one('click', handleClick);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btn">Click Me</button>
答案 1 :(得分:0)
您可以在按钮上注册回调函数,然后使用jquery off
方法删除该回调。这意味着当按下提交按钮时,您可以删除事件处理程序,然后设置一个计时器,该计时器随后会在计时器触发一段时间后重新添加它。您可以使用window.setTimer()
函数注册一段时间后要调用的函数。
另一种算法是在单击按钮时设置类级别“标志”,并在计时器到期时重置。在按下按钮的处理程序中,您将检查标志的值,如果为true,则忽略按下按钮。
答案 2 :(得分:0)
基本上setTimeout
用于处理1s
关闭状态。
以下是两个例子:
.one()
var $btn = $('#btnConfirmEditNo');
function doSomething() {
// Do here whatever you want
setTimeout(function(){
$btn.one("click", doSomething);
}, 1000);
}
$btn.one("click", doSomething);
function doSomething() {
var el = this;
if(el.noClick) return;
el.noClick = 1;
// Do here whatever you want
setTimeout(function() { el.noClick = 0; }, 1000);
}
$('#btnConfirmEditNo').click(doSomething);