Получилось только с помощью регулярных выражений
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="ru-ru" xml:lang="ru-ru">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>Перевод в транслит</title>
<script type="text/javascript">
function correctLayout(text){
if (typeof(text)=="undefined") return null;
var transl=new Array();
transl['А']='F'; transl['а']='f';
transl['Б']='<'; transl['б']='\,';
transl['В']='D'; transl['в']='d';
transl['Г']='U'; transl['г']='u';
transl['Д']='L'; transl['д']='l';
transl['Е']='T'; transl['е']='t';
transl['Ё']='~'; transl['ё']='`';
transl['Ж']=';'; transl['ж']=';';
transl['З']='P'; transl['з']='p';
transl['И']='B'; transl['и']='b';
transl['Й']='Q'; transl['й']='q';
transl['К']='R'; transl['к']='r';
transl['Л']='K'; transl['л']='k';
transl['М']='V'; transl['м']='v';
transl['Н']='Y'; transl['н']='y';
transl['О']='J'; transl['о']='j';
transl['П']='G'; transl['п']='g';
transl['Р']='H'; transl['р']='h';
transl['С']='C'; transl['с']='c';
transl['Т']='N'; transl['т']='n';
transl['У']='E'; transl['у']='e';
transl['Ф']='A'; transl['ф']='a';
transl['Х']='{'; transl['х']='[';
transl['Ц']='W'; transl['ц']='w';
transl['Ч']='X'; transl['ч']='x';
transl['Ш']='I'; transl['ш']='i';
transl['Щ']='O'; transl['щ']='o';
transl['Ъ']='}'; transl['ъ']=']';
transl['Ы']='S'; transl['ы']='s';
transl['Ь']='M'; transl['ь']='m';
transl['Э']='\"'; transl['э']='\'';
transl['Ю']='>'; transl['ю']='\.';
transl['Я']='Z'; transl['я']='z';
//некоторые символы не учтены специально
var result='';
for(i=0;i<text.length;i++) {
if(transl[text[i]]!=undefined) { result+=transl[text[i]]; }
else { result+=text[i]; }
}
return result;
};
function correctInPsevdoTag(text){
re= /\[math\]((.(?!\[\/math\]))*.)\[\/math\]/ig;
translit= function(text, group1) {
return correctLayout('[math]'+group1+'[/math]');
};
return text.replace(re, translit);
}
</script>
</head>
<body style="padding-left: 100px;">
<textarea id="abcd" style="width:300px; height:100px;" onkeyup="this.value=correctInPsevdoTag(this.value);"></textarea>
</body>
</html>
Но после каждого нажатия клавиши внутри [math][/math] курсор перебрасывает в конец строки
Как это можно исправить?