[英]Delete whole anchor tag in contenteditable div on one keypress
我有以下HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<div id="edit" contenteditable>
This is <a href="#">link</a> that is editable.
</div>
</body>
</html>
我想做的是一个非常简单的文本编辑器,您可以在其中放置链接(它们将通过JS转换为html),但是当您在后面按退格键或在其前面删除时,我希望它在以下位置消失一次(不逐字母删除锚文本)。
怎么会呢? 我使用Javascript的步骤如下:
</a>
是否在光标之前,如果是,则在光标之前的部分上运行regex,选择第一个匹配项并将其替换为空格。 <a ... >
是否在其前面,并将其也移除。 我只是不太确定如何将其放入代码中,也不能确定是否可以运行regex并使其能够识别contenteditable区域中的文本。 我想避免使用任何繁重的外部库,因为除此之外,文本编辑器实际上不会做更多的事情。
如果有人要在这里叉我的Codepen,那就是 。 感谢您的任何建议。
如果您已经掌握了将该方法传递给字符串并重新分配contenteditable部分的值的方法,那么这里是一个如何构造正则表达式的示例。
var textblock = document.getElementById('edit') function testContent(deletetype) { // deletetype == "delete" || "backspace" var txt = textblock.innerHTML.toString().trim(), rgxstring = "<a[^<]+<\\\\/a>", rgx if (deletetype == "delete") { rgxstring = "^" + rgxstring } else { rgxstring += "$" } rgx = new RegExp(rgxstring, "i") console.log(txt, txt.match(rgx)) textblock.innerHTML = txt.replace(rgx, "") } testContent("backspace")
<div id="edit" contenteditable> This is <a href="#">link</a> </div>
有一个干净的方法可以解决此问题:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<div id="edit" contenteditable>
This is <a href="#" contenteditable="false">link</a> that is editable.
</div>
</body>
</html>
添加contenteditable =“ false”将注册整个锚,而不是逐字母地注册。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.