I am trying to select a dynamically added timestamp - hit enter in the contentEditable element.
$('#content').on('keypress', function(e) {
if (e.which === 13) {
console.log('enter pressed');
e.preventDefault();
var range = window.getSelection().getRangeAt(0);
var element = document.createElement('p');
element.setAttribute("id", "uniqueIdentifier");
var date = new Date().getTime();
date = date.toString();
console.log('date: ' + date);
element.textContent = date;
//element.innerHTML = '<br>';
range.insertNode(element);
var range2 = document.createRange();
console.log('$(#content).text(): ' + $('#content').text());
var startOffset = $('#content').text().indexOf(date);
console.log('startOffset: ' + startOffset);
range2.setStart(document.getElementById('uniqueIdentifier'), startOffset);
range2.setEnd(document.getElementById('uniqueIdentifier'), startOffset + date.length);
// $('#content p.new').focus();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id='content' contentEditable='true'>test</p>
I am getting this error:
Uncaught IndexSizeError: Failed to execute 'setStart' on 'Range': There is no child at offset 4.
What am I missing?