- 防止重复点击
-
var isclick= true;//加一个点击开关
-
function click(){
-
if(isclick){
-
isclick = false;
-
//下面添加需要执行的事件
-
...
-
}
-
}
- 防止重复点击(设置定时器)
-
var isclick= true;
-
function click(){
-
if(isclick){
-
isclick= false;
-
//下面添加需要执行的事件
-
...
-
-
//定时器
-
setTimeout(function(){
-
isclick = true;
-
}, 500);
-
}
-
}
- 防抖动
-
/*防抖函数,通过推迟每次事件执行的时间来减少不必要的查询
-
*handler:要执行的方法
-
*delay:每次事件执行的推迟时间(毫秒)
-
*/
-
-
function debounce(handler, delay) {
-
var timer;
-
-
return function () {
-
var self = this, arg = arguments;
-
-
clearTimeout(timer);
-
-
timer = setTimeout(function () {
-
handler.apply(self, arg)
-
}, delay)
-
}
-
}
-
-
function showAll(e) {
-
console.log(e.target)
-
console.log(‘执行查询操作‘, new Date().getTime())
-
}
-
-
var searchInput = document.getElementById(‘search‘);
-
searchInput.addEventListener(‘keyup‘, debounce(showAll, 500), false)
- 节流函数
-
/*节流函数,通过控制每次事件执行的时间间隔控制短时间多次执行方法
-
*handler:要执行的方法
-
*wait:每次点击事件执行的时间间隔(毫秒)
-
*/
-
-
function throttle(handler, wait) {
-
-
var lastTime = 0;
-
-
return function () {
-
-
var nowTime = new Date().getTime();
-
-
if (nowTime - lastTime > wait) {
-
handler.apply(this, arguments);
-
lastTime = nowTime;
-
}
-
-
}
-
}
-
-
// 提交方法
-
function ajaxForm(e) {
-
console.log(e.target)
-
console.log(‘执行提交操作‘, new Date().getTime())
-
}
-
-
var subBtn = document.getElementById(‘submit‘);
-
subBtn.addEventListener(‘click‘, throttle(ajaxForm, 1000), false)
- 表单防重复提交
-
-
form action="" onsubmit="return dosubmit()" method="post">
-
<input1>
-
<input2>
-
...
-
<input type="submit" value="提交" id="submit">
-
</form>
-
-
var isCommitted = false;//表单是否已经提交标识,默认为false
-
function dosubmit(){
-
if(isCommitted==false){
-
isCommitted = true;//提交表单后,将表单是否已经提交标识设置为true
-
return true;//返回true让表单正常提交
-
}else{
-
return false;//返回false那么表单将不提交
-
}
-
}