我在DOM 绑了 单击 事件,还有 双击事件
下面这样写还是有点冲突。 当操作过快时,请教有什么更完美的 方案
/ 单击td
let timer: any = null
function inputFocus(event: any) {
clearTimeout(timer)
timer = setTimeout(() => {
if (editState) return
// 非编辑状态 点击则全选 input
if (event.target.nodeName != 'TD') return
sDOM = eDOM = endTd.value = startTd.value = event.target
const inputDOM = (event.target as HTMLTableCellElement).children[0] as HTMLInputElement
inputDOM.classList.add('input-focus')
inputDOM.focus()
inputDOM.select() // 输入自动 覆盖 原 input的内容
document.removeEventListener('keydown', tdKeydown) //绑定新事件函数前用removeEventListener移除上次的事件函数即可
document.addEventListener('keydown', tdKeydown)
}, 300);
}
// 双击 td 进入编辑状态
function cellEdit(event: any) {
if (editState) return // 假如已经是编辑状态
const inputDOM = (event.target as HTMLTableCellElement).children[0] as HTMLInputElement
inputDOM.classList.remove('input-focus')
inputDOM.style.pointerEvents = 'auto'
cellRange.weight = '1px'
nextTick(() => {
inputDOM.focus()
inputDOM.selectionStart = 300
})
// console.log(cellEdit, 2, inputDOM);
editState = true
clearTimeout(timer)
}