方法一:使用指令的方式
Vue.directive('preventReClick',{
inserted (el, binding) {
el.addEventListener('click', () => {
if (!el.disabled) {
el.disabled = true
setTimeout(() => {
el.disabled = false
}, binding.value || 3000)
}
})
}})
使用方法:
<el-button type="primary" @click="submitForm" v-preventReClick>确 定</el-button>
方法二:全局修改onclick
const on = Vue.prototype.$on
Vue.prototype.$on = function(event, func) {
let timer
let flag = true
let newFunc = func
if (event == 'click') {
newFunc = function() {
if (flag) {
func.apply(this, arguments)
flag = false
}
clearTimeout(timer)
timer = setTimeout(function() {
flag = true
}, 500)
}
}
on.call(this, event, newFunc)
}