我在寻找解决方案时遇到麻烦。.
如何监听某个字符的删除/退格
所以我知道我可以像这样监听退格事件。
function() {
const textarea = document.querySelector('textarea');
const backspace = 8;
textarea.addEventListener('keydown', (event) => {
if(event.keyCode === backspace) {
// do something
}
});
}
但是我想做的是,如果我退格并且删除的字符是@
-然后做点事
我该怎么做?
任何帮助将不胜感激!
谢谢
答案 0 :(得分:2)
您可以获取selectionStart
中的textarea
来插入符号的位置,然后访问该值的索引(减一)以获取将要删除的字符:
const textarea = document.querySelector('textarea');
const backspace = 8;
textarea.addEventListener('keydown', (event) => {
if (event.keyCode === backspace) {
console.log('backspace');
const { value } = textarea;
const charToBeDeleted = value[textarea.selectionStart - 1];
if (charToBeDeleted === '@') {
console.log('deleting @...');
}
}
});
textarea {
width: 100%;
height: 200px;
}
<textarea></textarea>
还要确保您使用===
来检查是否相等-=
已分配。
如果您要检查用户是否可能通过选择删除多个字符,则还必须检查selectionEnd
,并适当检查slice
的值:>
const textarea = document.querySelector('textarea');
const backspace = 8;
textarea.addEventListener('keydown', (event) => {
if (event.keyCode === backspace) {
console.log('backspace');
const { value, selectionStart, selectionEnd } = textarea;
const stringToBeDeleted =
selectionStart === selectionEnd
? value[selectionStart - 1]
: value.slice(selectionStart, selectionEnd);
console.log(stringToBeDeleted);
if (stringToBeDeleted.includes('@')) {
console.log('deleting @...');
}
}
});
textarea {
width: 100%;
height: 200px;
}
<textarea></textarea>