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

Спасибо, хороший и нужный скрипт, пригодится, но не совсем подходит под текущую нужду.

Например, чтобы пользователю набрать этот абзац с формулам (см. рис.), нужно 24 раза переключить раскладку клавиатуры, так как LaTex-код формул набирается на латинице.



Нужно чтобы функция вызывалась (автокоррекция раскладки клавиатуры во время ввода) только когда русская буква появляется между [math]здесь[/math], а не во всей textarea. Думаю, не обязательно отлавливать позицию курсора.

Сама функция
<!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 correctRuEnlayout(){
var text=document.getElementById('abcd').value;
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';
    transl['/']='|';     transl['\\']='\\';
	transl[':']='^';     transl['?']='&';
	//некоторые символы не учтены специально
	
    var result='';
    for(i=0;i<text.length;i++) {
        if(transl[text[i]]!=undefined) { result+=transl[text[i]]; }
        else { result+=text[i]; }
    }
    document.getElementById('abcd').value=result;
}
</script>
</head>
<body style="padding-left: 100px;">
<textarea id="abcd" style="width:300px; height:100px;" onkeyup="correctRuEnlayout()" ></textarea>
</body>
</html>

Последний раз редактировалось Demath, 30.07.2012 в 19:42.
Ответить с цитированием