I'm using insertAtCaret function and it works well with a text area. I'm searching for a solution to change the text area by a content editable div. I changed the text area by a div but it doesn't work.
$(document).ready( function()
{
$('#list li').click(function() {
$("#mytextarea").insertAtCaret($(this).text());
return false
});
});
$.fn.insertAtCaret = function (myValue) {
return this.each(function(){
//IE support
if (document.selection) {
this.focus();
sel = document.selection.createRange();
sel.text = myValue;
this.focus();
}
//MOZILLA / NETSCAPE support
else if (this.selectionStart || this.selectionStart == '0') {
var startPos = this.selectionStart;
var endPos = this.selectionEnd;
var scrollTop = this.scrollTop;
this.value = this.value.substring(0, startPos)+ myValue+ this.value.substring(endPos,this.value.length);
this.focus();
this.selectionStart = startPos + myValue.length;
this.selectionEnd = startPos + myValue.length;
this.scrollTop = scrollTop;
} else {
this.value += myValue;
this.focus();
}
});
};
#sidediv li{cursor:pointer;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="sidediv">
<ul id="list">
<li>Client first name</li>
<li>lastname</li>
<li>username</li>
</ul>
</div>
<textarea name="mytextarea" id="mytextarea" cols="70" rows="10">Hello!</textarea>