JSFiddle - React, Tailwind, and code Playground
by timdown
HTML
Uneditable
<ul contenteditable="true" id="editor">
<li>Some editable list items</li>
<li>Some editable list items</li>
<li>Some editable list items</li>
</ul>
Uneditable
CSS
ul {
border: solid green 1px;
}
JavaScript
var editor = document.getElementById("editor");
function deleteSelectedContent() {
if (window.getSelection) {
var sel = window.getSelection();
if (sel.rangeCount > 0) {
var range = sel.getRangeAt(0);
var editorRange = range.cloneRange();
editorRange.selectNodeContents(editor);
// Adjust selection range boundaries
if (range.compareBoundaryPoints(Range.START_TO_START, editorRange) == -1) {
range.setStart(editorRange.startContainer, editorRange.startOffset);
}
if (range.compareBoundaryPoints(Range.END_TO_END, editorRange) == 1) {
range.setEnd(editorRange.endContainer, editorRange.endOffset);
}
range.deleteContents();
}
}
}
editor.addEventListener("keydown", function(evt) {
if (window.getSelection &&
!window.getSelection().isCollapsed &&
(evt.keyCode == 8 || evt.keyCode == 46)) {
evt.preventDefault();
deleteSelectedContent();
}
}, false);