Código HTML :
<div>
<textarea id="sup" rows="4"></textarea><br>
<!-- texto que se mantendra estatico -->
<div style="display: none" id="textfijo"> prueba de texto fijo</div>
<div id="alert"></div>
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$('#sup').focus();
function autorun(){
$('div').on('mousedown', '#sup', function(e){
var ele = document.getElementById ("sup");
if ('selectionStart' in ele) {
if(ele.selectionStart > $(this).val().length-$('#textfijo').text().length){
document.oncontextmenu = function(){return false}
ele.selectionStart = $(this).val().length-$('#textfijo').text().length;
ele.selectionEnd = $(this).val().length-$('#textfijo').text().length;
}else{
document.oncontextmenu = function(){return true}
}
}
});
$('div').on('click', '#sup', function(e){
var ele = document.getElementById ("sup");
if ('selectionStart' in ele) {
if(ele.selectionStart > $(this).val().length-$('#textfijo').text().length){
ele.selectionStart = $(this).val().length-$('#textfijo').text().length;
ele.selectionEnd = $(this).val().length-$('#textfijo').text().length;
}
}
});
$('div').on('keydown', '#sup', function(e){
var ele = document.getElementById ("sup");
if ('selectionStart' in ele) {
if(e.keyCode!=37 && e.keyCode!=38 && e.keyCode!=39 && e.keyCode!=40){
$('#alert').text(ele.selectionStart);
if (ele.selectionStart > $(this).val().length-$('#textfijo').text().length) {
$(this).val($(this).val().substring(0, $(this).val().length-$('#textfijo').text().length));
}
ele.focus ();
}else{
}
}
});
$('div').on('keyup', '#sup', function(e){
var ele = document.getElementById ("sup");
if ('selectionStart' in ele) {
if(e.keyCode!=37 && e.keyCode!=38 && e.keyCode!=39 && e.keyCode!=40 && e.keyCode!=35){
if (ele.selectionStart > $(this).val().length-$('#textfijo').text().length){
$(this).val($(this).val()+$('#textfijo').text());
ele.selectionStart = $(this).val().length-$('#textfijo').text().length;
ele.selectionEnd = $(this).val().length-$('#textfijo').text().length;
// $('#alert').text($(this).val().replace(/hola/g, ''));
ele.focus ();
}
}else{
if(ele.selectionStart > $(this).val().length-$('#textfijo').text().length){
ele.selectionStart = $(this).val().length-$('#textfijo').text().length;
}
}
}
});
}
if (document.addEventListener) document.addEventListener("DOMContentLoaded", autorun, false);
else if (document.attachEvent) document.attachEvent("onreadystatechange", autorun);
else window.onload = autorun;
</script> 