Добрый день есть код который переводит в input с английской раскладки на русскую все замечательно работает, но проблема с буквой "х"русской в английской раскладке это "[" ее почему то не переводит и все что за ней в слове идет так же перестает переводить кто подскажет в чем может быть проблема кусок кода Код (Text): <script> var arr = [ {ru: "й", en: "q"},{ru: "ц", en: "w"},{ru: "у", en: "e"},{ru: "к", en: "r"}, {ru: "е", en: "t"},{ru: "н", en: "y"},{ru: "г", en: "u"},{ru: "ш", en: "i"}, {ru: "щ", en: "o"},{ru: "з", en: "p"},{ru: "х", en: "["},{ru: "ъ", en: "]"}, {ru: "ф", en: "a"},{ru: "ы", en: "s"},{ru: "в", en: "d"},{ru: "а", en: "f"}, {ru: "п", en: "g"},{ru: "р", en: "h"},{ru: "о", en: "j"},{ru: "л", en: "k"}, {ru: "д", en: "l"},{ru: "ж", en: ";"},{ru: "э", en: "'"},{ru: "я", en: "z"}, {ru: "ч", en: "x"},{ru: "с", en: "c"},{ru: "м", en: "v"},{ru: "и", en: "b"}, {ru: "т", en: "n"},{ru: "ь", en: "m"},{ru: "б", en: ","},{ru: "ю", en: "."} ]; function trans(obj){ var lang = obj.getAttribute('lang'); for (var i = 0; i<arr.length; i++){ if(lang == "ru" && obj.value.indexOf(arr[i].en) != -1){ obj.value = obj.value.replace(new RegExp(arr[i].en, "gi"), arr[i].ru); }else if(lang == "en" && obj.value.indexOf(arr[i].ru) != -1){ obj.value = obj.value.replace(new RegExp(arr[i].ru, "gi"), arr[i].en); } } } </script>
решается заменой obj.value = obj.value.replace(new RegExp(arr.en, "gi"), arr.ru); на obj.value = obj.value.toLocaleLowerCase().replaceAll(arr.en, arr.ru); ну и во второй строке соответственно
Зачем перебирать весь Алфавит? Неоптимально для текстов менее 32 символов ну и посмотрите 'х' - в массиве, это точно русская, может это английскаия х???