CODE
function BBC(o, left, right, inside)
{
//Jeśli znamy położenie kursora
if(typeof o.selectionStart === 'number')
{
var start = o.selectionStart;
var end = o.selectionEnd;
var scroll = o.scrollTop;
var before = o.value.substring(0, start); //Tekst przed kursorem
var after = o.value.substring(end, o.textLength); //Tekst po kursorze
var inside = (inside) ? inside : o.value.substring(start, end); //W środku zaznaczenia
o.value = before + left + inside + right + after; //Nowa wartość textarea
o.selectionEnd = before.length + left.length + inside.length; //Nowe położenie kursora
o.scrollTop = scroll;
o.focus();
}
else { o.value += left + (inside||'') + right; }
}
{
//Jeśli znamy położenie kursora
if(typeof o.selectionStart === 'number')
{
var start = o.selectionStart;
var end = o.selectionEnd;
var scroll = o.scrollTop;
var before = o.value.substring(0, start); //Tekst przed kursorem
var after = o.value.substring(end, o.textLength); //Tekst po kursorze
var inside = (inside) ? inside : o.value.substring(start, end); //W środku zaznaczenia
o.value = before + left + inside + right + after; //Nowa wartość textarea
o.selectionEnd = before.length + left.length + inside.length; //Nowe położenie kursora
o.scrollTop = scroll;
o.focus();
}
else { o.value += left + (inside||'') + right; }
}
Firefox 3: działa poprawnie
Opera 9.6: zazwyczaj wstawia tagi poprawnie, ale ustawia kursor na końcu pola
IE 6: zawsze stawia tagi na końcu pola, nie ustawia kursora, nie aktywuje pola
Jak go przerobić, aby działał w każdej przeglądarce, przynajmniej IE 6+, FX 2+, Opera 9+?