机缘 {佛系一天}
人闲着就会胡思乱想,不知所措
谁知道为何今日脑子短路
竟然想研究微信 @人名 删除功能,如何实现
这是研究后结果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<input type="text" id="wx" />
<script>
let editText = document.getElementById("wx");
editText.addEventListener("keydown", function (event) {
var editText = event.target;
var editable = editText.value;
// 获取光标所在位置
var selectionStart = editText.selectionStart;
var content = editable.substring(0, selectionStart);
var pattern = /.*@.+?\s/;
var matcher = content.match(pattern);
// 查询字符串中是否有以@开头和空格结尾的格式
if (matcher && event.keyCode === 8) {
if (matcher[0] === content) {
var indexs = [];
var patternSub = /@.+?\s/g;
var matcherSub;
while ((matcherSub = patternSub.exec(content)) !== null) {
indexs.push(matcherSub.index);
}
if (indexs.length > 0) {
// 删除距离光标最近的符合筛选逻辑的字符串
editText.value =
editable.substring(0, indexs[indexs.length - 1]) +
editable.substring(selectionStart);
return true;
}
}
}
return false;
});
</script>
</body>
</html>
憧憬
如果每天脑子都这样短路那该多好,可惜不是的!
Tips
这只是一中是实现方式,有问题就提出来我好修改。