<script type="text/javascript">
function LatRus(TxtTrans1,a){TxtTrans1=='lat'? TxtTrans1='rus':TxtTrans1='lat';
lat0='qwertyuiopasdfghjkl;\'zxcvbnm\,QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>`~[].'.split('');
lat='qwertyuiopasdfghjkl;\'zxcvbnm\,QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>`~'.split('');
lat.push('\\[');lat.push('\\]');lat.push('\\.');
rus=('йцукенгшщзфывапролджэячсмитьбЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮёЁхъю').split('');
function transF(p){ar1=lat;ar2=rus;if(TxtTrans1=='lat'){ar2=lat0;ar1=rus}for(var i=0; i<ar1.length; i++){trans='/'+ar1[i]+'/gm';p=p.replace(eval(trans), ar2[i])}return p;} return transF(a);
}
var is_chrome = false, chrome_version = false;
if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {
is_chrome = true;
}
function getSelectionStart(o) {
if (o.createTextRange) {
// IE, Opera
var r = document.selection.createRange().duplicate();
r.moveEnd('character', o.value.length);
if (r.text == '') {
return o.value.length;
}
return o.value.lastIndexOf(r.text);
} else { if(is_chrome)return o.selectionStart+1;
// FF
return o.selectionStart;
}
return true;
}
function setSelectionStart(o,n) {
if(!document.all)
{
var end = o.value.length;
o.setSelectionRange(n,n);
o.focus();
}
else
{
var r = o.createTextRange();
r.collapse(true);
r.moveStart("character", n);
r.moveEnd("character", 0);
r.select();
}
return true;
}
function correctInTag (tx) {
var Thistext = tx.value;
var CaretPos = getSelectionStart(tx);
var rega = /\[math\]([\s\S]*?)\[\/math\]/gm;
function replacer (str, p1, offset, s) {
var a = '[math]'; var b = '[/math]';
var St = offset + a.length;
var End = offset + str.length - b.length;
if(CaretPos >= St &&CaretPos<=End){
var Sstr = s.substring(St,End)
if(Sstr.indexOf(a)!=-1) return str;
var S = LatRus('rus',Sstr);/*alert(S)*/;
return a+S+b;
} else return str;
}
var str2 = Thistext.replace(rega,replacer)
tx.value = str2;
setSelectionStart(tx,CaretPos);
}
</script>
<textarea oninput="correctInTag (this)" id="abcd" style="width: 300px; height: 100px">
Наберите что-либо на русском внутри
Наберите что-либо
на русском внутри [math].
[/math].
И в этом [math].
[/math]
</textarea>
Можно вставлять даже копированием -осталось запретить позицию курсора наезда на теги и запрет их удаления или порчи