Сделайте так, чтобы при вводе во второй текстареа транслита текста, по потери фокуса
Сделайте так, чтобы при вводе во второй текстареа транслита текста, по потери фокуса этот текст преобразовывался в русский и выводился в первом текстареа.
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>focusout</title> </head> <body> <! -- Задача 4.1> <textarea name="" cols="30" rows="10" id="one"></textarea> <textarea name="" cols="30" rows="10" id="two"></textarea> <script> 'use struck'; let oneTa = document.querySelector('#one'); let twoTa = document.querySelector('#two'); let arr = ['а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я']; let arr2 = ['a', 'b', 'v', 'g', 'd', 'e', 'yo', 'zh', 'z', 'i', 'iy', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'kh', 'ts', 'ch', 'sh', "sh'", "'", 'y', "'", 'ye', 'yu', 'ya']; let rus = [...arr, ...uppCase(arr)]; let eng = [...arr2, ...uppCase(arr2)]; oneTa.addEventListener('blur',()=>{ twoTa.value=translit(oneTa.value,'rus'); }); twoTa.addEventListener('blur',()=>{ oneTa.value=translit(twoTa.value,'eng'); }); function translit(str, lang) { let newStr = ''; for (let i = 0; i < str.length; i++) { if (lang == 'rus') { if (str[i] != ' ') { let ind = rus.indexOf(str[i]); newStr += eng[ind]; } else { newStr += str[i]; } } if (lang == 'eng') { if (str[i] != ' ') { let ind = eng.indexOf(str[i]); newStr += rus[ind]; } else { newStr += str[i]; } } } return newStr; } function uppCase(arr) { let mas = []; for (let i = 0; i < arr.length; i++) { mas[i] = arr[i].toUpperCase(); } return mas; } </script> </body> </html> |
javascript888,
ввести справа SH'yotka в вашем варианте и в этом <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>translit</title> </head> <body> <! -- Задача 4.1> <textarea name="" cols="30" rows="10" id="one"></textarea> <textarea name="" cols="30" rows="10" id="two"></textarea> <script> 'use struck'; let oneTa = document.querySelector('#one'); let twoTa = document.querySelector('#two'); let arr = ['а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я']; let arr2 = ['a', 'b', 'v', 'g', 'd', 'e', 'yo', 'zh', 'z', 'i', 'iy', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'kh', 'ts', 'ch', 'sh', "sh'", "'", 'y', "'", 'ye', 'yu', 'ya']; let { rus, eng } = arr.reduce((obj, a, i) => { i = arr2[i]; obj.rus[a] = i; obj.eng[i] = a; return obj }, { rus: {}, eng: {} }); arr2.sort((a, b) => b.length - a.length); oneTa.addEventListener('blur', () => { twoTa.value = translit(oneTa.value, 'rus'); }); twoTa.addEventListener('blur', () => { oneTa.value = translit(twoTa.value, 'eng'); }); function translit(str, lang) { let ar = arr, swap = rus; if (lang == 'eng') { ar = arr2, swap = eng }; ar.forEach(a => { let reg = new RegExp(a, 'gm'); str = str.replace(reg, a => swap[a]); reg = new RegExp(a.toUpperCase(), 'gm'); str = str.replace(reg, a => swap[a.toLowerCase()].toUpperCase()); }) return str } </script> </body> </html> |
Часовой пояс GMT +3, время: 20:05. |