Dim@,
ему нужно что-то вроде этого, но только для элемента с contenteditable
<!DOCTYPE html>
<html>
<head></head>
<body>
<textarea id="area" style="width: 100%">________________________________________________________</textarea>
<script type="text/javascript">
document.getElementById( 'area' ).onkeypress = function( e ) {
e = e || window.event;
var target = e.target || e.srcElement,
text = target.value,
caretPos = 0;
if ( e.which == null ) {
e.which = e.charCode != null ? e.charCode : e.keyCode;
}
if ( e.which == 9 || e.which == 8 || e.which == 0 ||
/[\x21\x22\x23\x24\x25\x26\x27\x28\x2E]/.test( String.fromCharCode( e.keyCode ) ) ) {
return;
}
if ( document.selection ) {
target.focus();
var sel = document.selection.createRange();
sel.moveStart( 'character', -target.value.length );
caretPos = sel.text.length;
} else if ( target.selectionStart || target.selectionStart == '0' ) {
caretPos = target.selectionStart;
}
target.value = text.substr( 0, caretPos ) + text.substr( caretPos + 1 );
if ( target.setSelectionRange ) {
target.focus();
target.setSelectionRange( caretPos, caretPos );
} else if ( target.createTextRange ) {
var range = target.createTextRange();
range.collapse( true );
range.moveEnd( 'character', caretPos );
range.moveStart( 'character', caretPos );
range.select();
}
}
</script>
<body>
</html>
с элементами возни просто больше, с возвращением фокуса на ту позицию которую изменяем.