Input 內容格式:[xq]小強;[xh]小紅;[xm]小明;。光標在哪個名字中,按 Backspace 刪除整個 [tag]名字; 片段。
keydown 事件,攔截 Backspace(keyCode 8)input.selectionStart; 分隔,或正則 \[[^\]]+\][^;]+;)setRangeText('', start, end, 'select') 替換為空串event.preventDefault() 阻止默認單字符刪除input.addEventListener('keydown', e => {
if (e.key === 'Backspace') {
const pos = input.selectionStart;
const text = input.value;
// 正則查找光標所在片段邊界
const regex = /\[[^\]]+\][^;]+;/g;
let match;
while ((match = regex.exec(text)) !== null) {
if (match.index <= pos && pos <= match.index + match[0].length) {
input.setRangeText('', match.index, match.index + match[0].length);
e.preventDefault();
break;
}
}
}
});