Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: при транстлите виснит ИЕ
 
 автор: m@rchello   (27.07.2008 в 11:51)   письмо автору
 
 

код скрипта

<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 всё ок работает ..... но ие напрочь виснет ..... подскажите что не так?

  Ответить  
 
 автор: PAT   (27.07.2008 в 12:10)   письмо автору
 
   для: 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? Её значение после выхода из последнего цикла где-то ещё потом используется?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования