Показать сообщение отдельно
  #12 (permalink)  
Старый 01.08.2012, 14:49
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

Вот получилось (не без помощи) исправлять раскладку клавиатуры с 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>
Ответить с цитированием