Вот получилось (не без помощи) исправлять раскладку клавиатуры с Ru на En внутри тегов [ math][/math ] в textarea во время ввода (событие OnKeyUp), при этом каретка не переносится в конец строки после каждого нажатия клавиши внутри [ math][/math ].
Но раскладка клавиатуры корректируется только в первом вхождении [ math][/math ], в последующих не изменяется
Подскажите, как это исправить.
<textarea style="width: 450px; height: 140px" id="abcd" onkeyup="correctInTag (this)">
Наберите что-либо на русском внутри [ math][/math ].
Но внутри второй пары [ math][/math ] и всех последующих раскладка не корректируется.
</textarea>
<script type="text/javascript">
function correctInTag (t)
{
if ((/[а-я]/i).exec (t.value.split ('[ math]') [1].split ('[/math ]') [0]) == null) return;
var cyr = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя',
klv = 'F<DULT~:PBQRKVYJGHCNEA{WXIOMS}">Zf,dult`;pbqrkvyjghcnea[wxioms]\'.z';
if (document.selection)
{t.focus ();
var rng = document.selection.createRange ();
rng.moveEnd ('character', -1); rng.moveEnd ('character', 1);
rng.text = klv.charAt (cyr.indexOf (rng.text));
}
else if (t.selectionStart >= 0)
{var s = t.selectionStart - 1;
t.value = t.value.substr (0, s)
+ klv.charAt (cyr.indexOf (t.value.substr (s, 1)))
+ t.value.substr (s + 1);
t.selectionStart = t.selectionEnd = s + 1;
}
}
</script>