сначала попробуй
$("pre").keydown(function(e){
if (e.keyCode==9) {
e.preventDefault();
$("pre").append("\t");
}
});
для вставки вкладки. он вставит вкладку после вашего курсора
тогда в хроме
var myselection = document.getSelection();
myselection.extend(jQuery("pre")[0].lastChild, jQuery("pre")[0].lastChild.length)
myselection.collapseToEnd();
в IE8
var myselection = document.selection;
myselection.extend(jQuery("pre")[0].lastChild, jQuery("pre")[0].lastChild.length)
myselection.collapseToEnd();
должен помочь вам в конце.
(все вместе)
$("pre").keydown(function(e){
if (e.keyCode==9) {
e.preventDefault();
$("pre").append("\t");
var myselection = null;
if(document.getSelection)
{
myselection = document.getSelection();
}
else if (document.selection)
{
myselection = document.selection;
}
if(myselection != null)
{
myselection.extend(jQuery("pre")[0].lastChild, jQuery("pre")[0].lastChild.length)
myselection.collapseToEnd();
}
}
});
EDIT
также было бы безопаснее добавить в тест, чтобы увидеть, является ли lastChild нулевым, и тому подобное. Также в функции keydown jQuery("pre")
было бы лучше быть jQuery(this)
и поместить в переменную, если вы используете более одного раза. (что пример, но я ленивый)