|
|
|
| код скрипта
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script language="javascript">
function translit()
{
var txt=document.getElementById('asd').value;
txt=txt.toLowerCase();
str1="абвгдеёзийклмнопрстуфхцыэ ";
str2="abvgdeeziiklmnoprstufhcie_";
var str3 = new Array();
str3[0]='ж';
str3[1]='ч';
str3[2]='ш';
str3[3]='щ';
str3[4]='ю';
str3[5]='я';
var str4 = new Array();
str4[0]='zh';
str4[1]='ch';
str4[2]='sh';
str4[3]='sch';
str4[4]='ju';
str4[5]='ja';
for(i=0; i<str1.length; i++)
{
txt = txt.replace(new RegExp(str1[i],"g"), str2[i]);
}
for(i=0; i<str3.length; i++)
{
txt = txt.replace(new RegExp(str3[i],"g"), str4[i]);
}
txt = txt.replace(new RegExp("[^а-яa-z0-9_-]"), '');
txt = txt.replace(new RegExp("[ъь]"), '');
document.getElementById('asd').value=txt;
}
</script>
</head>
<body>
<input id="asd" name="n1" type="text" onKeyUp="translit()" onBlur="translit()" maxlength="30" size="30">
</body>
</html>
|
в опере и FF всё ок работает ..... но ие напрочь виснет ..... подскажите что не так? | |
|
|
|
|
|
|
|
для: m@rchello
(27.07.2008 в 11:51)
| |
замените
str1 = "абвгдеёзийклмнопрстуфхцыэ ";
str2 = "abvgdeeziiklmnoprstufhcie_";
на
str1 = "абвгдеёзийклмнопрстуфхцыэ ".split ('');
str2 = "abvgdeeziiklmnoprstufhcie_".split ('');
|
Полагаю это ваше решение - "на лету" заменять символы - очень неудачным.
Пусть человек введет кириллицей слово ПОЛНОСТЬЮ, пусть посмотрит на него, пусть исправит его - если вдруг сделал ошибку... и только тогда - меняйте по нажатию кнопки.
Попробуйте в вашем варианте сами ИСПРАВИТЬ какое-то введенное кириллицей слово: замучаетесь соображать - где и что заменять.
Рекомендую ознакомиться - http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=54089
PS. ответьте сами себе на вопрос - почему массивы str3 и str4 у вас локальные, а вот str1 и str2 - глобальные? В чём тут цимус? Почему глобальной является переменная i? Её значение после выхода из последнего цикла где-то ещё потом используется? | |
|
|
|