За последние 24 часа нас посетили 23137 программистов и 1238 роботов. Сейчас ищут 811 программистов ...

Проблема в свитчере

Тема в разделе "JavaScript и AJAX", создана пользователем Vptech, 31 май 2021.

  1. Vptech

    Vptech Активный пользователь

    С нами с:
    16 апр 2019
    Сообщения:
    33
    Симпатии:
    0
    Добрый день есть код который переводит в input с английской раскладки на русскую
    все замечательно работает, но проблема с буквой "х"русской
    в английской раскладке это "["
    ее почему то не переводит и все что за ней в слове идет так же перестает переводить

    кто подскажет в чем может быть проблема
    кусок кода
    Код (Text):
    1. <script>
    2. var arr = [
    3. {ru: "й", en: "q"},{ru: "ц", en: "w"},{ru: "у", en: "e"},{ru: "к", en: "r"},
    4. {ru: "е", en: "t"},{ru: "н", en: "y"},{ru: "г", en: "u"},{ru: "ш", en: "i"},
    5. {ru: "щ", en: "o"},{ru: "з", en: "p"},{ru: "х", en: "["},{ru: "ъ", en: "]"},
    6. {ru: "ф", en: "a"},{ru: "ы", en: "s"},{ru: "в", en: "d"},{ru: "а", en: "f"},
    7. {ru: "п", en: "g"},{ru: "р", en: "h"},{ru: "о", en: "j"},{ru: "л", en: "k"},
    8. {ru: "д", en: "l"},{ru: "ж", en: ";"},{ru: "э", en: "'"},{ru: "я", en: "z"},
    9. {ru: "ч", en: "x"},{ru: "с", en: "c"},{ru: "м", en: "v"},{ru: "и", en: "b"},
    10. {ru: "т", en: "n"},{ru: "ь", en: "m"},{ru: "б", en: ","},{ru: "ю", en: "."}
    11. ];
    12. function trans(obj){
    13. var lang = obj.getAttribute('lang');
    14. for (var i = 0; i<arr.length; i++){
    15. if(lang == "ru" && obj.value.indexOf(arr[i].en) != -1){
    16.   obj.value = obj.value.replace(new RegExp(arr[i].en, "gi"), arr[i].ru);
    17. }else if(lang == "en" && obj.value.indexOf(arr[i].ru) != -1){
    18.   obj.value = obj.value.replace(new RegExp(arr[i].ru, "gi"), arr[i].en);
    19. }
    20. }
    21. }
    22.   </script>
     
  2. Vptech

    Vptech Активный пользователь

    С нами с:
    16 апр 2019
    Сообщения:
    33
    Симпатии:
    0
    решается заменой obj.value = obj.value.replace(new RegExp(arr.en, "gi"), arr.ru); на
    obj.value = obj.value.toLocaleLowerCase().replaceAll(arr.en, arr.ru);

    ну и во второй строке соответственно
     
  3. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    738
    Адрес:
    Татарстан
    Зачем перебирать весь Алфавит?
    Неоптимально для текстов менее 32 символов

    ну и посмотрите 'х' - в массиве, это точно русская, может это английскаия х???