<body>
<div class="container">
<h1>Set cursor at end of elements demo</h1>
<section>
<p>Content Editable Div with Child nodes:</p>
<div contenteditable="true" id="1" class="element" spellcheck="false">
<span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi sagittis sit amet est sed volutpat. Ut eu ipsum quam.</span><span> Nam at tellus eu mauris lacinia ultrices sed at elit. Sed suscipit lectus in diam viverra, at dapibus dui lobortis.
</span>
</div>
<script>let element = document.getElementById("1")</script>
<button onclick='setCarat(element)'>
Set Cursor at end
</button>
</section>
<section>
<p>Textarea:</p>
<textarea id="2" class="element" spellcheck="false">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi sagittis sit amet est sed volutpat.</textarea>
<script>let element2 = document.getElementById("2")</script>
<button onclick='setCarat(element2)'>
Set Cursor at end
</button>
</section>
<section>
<p>Input:</p>
<input id="3" class="element" value="Lorem ipsum dolor sit amet, consectetur adipiscing elit." spellcheck="false">
<script>let element3 = document.getElementById("3")</script>
<button onclick='setCarat(element3)'>
Set Cursor at end
</button>
</section>
</body>
* {
box-sizing: border-box;
}
body {
background: #DFD8DC;
}
body, p, div, textarea, input, button {
color: #333;
line-height: 1.5;
font-family: sans-serif;
}
p {
font-weight: bold;
}
section {
padding: 15px;
border-bottom: 1px solid #999;
}
.container {
width: 50%;
margin: 0 auto;
}
h1 {
color: #9a7f94;
border-bottom: 2px solid #9a7f94;
}
.element {
border: 1px solid #ccc;
padding: 10px;
font-size: 14pt;
background: #fff;
border-radius: 5px;
}
textarea {
height: 50px;
width: 100%;
}
input {
display: inline-block;
min-width: 500px;
}
button {
margin-top: 10px;
padding: 10px;
background: #B4BAD4;
border: none;
border-radius: 5px;
}
button:hover {
background: #949dc3;
}
function setCarat(element) {
// Place cursor at the end of a content editable div
if (element.type !== "textarea" && element.getAttribute("contenteditable") === "true") {
element.focus()
window.getSelection().selectAllChildren(element)
window.getSelection().collapseToEnd()
} else {
// Place cursor at the end of text areas and input elements
element.focus()
element.select()
window.getSelection().collapseToEnd()
}
}
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.