Транслитерация текста из
Есть поле для ввода текста и чекбокс. Когда чекбокс выбран, все буквы должны поменяться с кириллицы на латиницу.
Вопрос: Как реализовать транслитерацию текста?
Код:
function send() {
var text = document.getElementById('text').value;
var check = document.getElementById('trans').value;
let trans = new Array();
trans['А'] = 'A';
trans['а'] = 'a';
trans['Б'] = 'B';
trans['б'] = 'b';
trans['В'] = 'V';
trans['в'] = 'v';
trans['Г'] = 'G';
trans['г'] = 'g';
trans['Д'] = 'D';
trans['д'] = 'd';
trans['Е'] = 'E';
trans['е'] = 'e';
trans['Ё'] = 'Yo';
trans['ё'] = 'yo';
trans['Ж'] = 'Zh';
trans['ж'] = 'zh';
trans['З'] = 'Z';
trans['з'] = 'z';
trans['И'] = 'I';
trans['и'] = 'i';
trans['Й'] = 'Y';
trans['й'] = 'y';
trans['К'] = 'K';
trans['к'] = 'k';
trans['Л'] = 'L';
trans['л'] = 'l';
trans['М'] = 'M';
trans['м'] = 'm';
trans['Н'] = 'N';
trans['н'] = 'n';
trans['О'] = 'O';
trans['о'] = 'o';
trans['П'] = 'P';
trans['п'] = 'p';
trans['Р'] = 'R';
trans['р'] = 'r';
trans['С'] = 'S';
trans['с'] = 's';
trans['Т'] = 'T';
trans['т'] = 't';
trans['У'] = 'U';
trans['у'] = 'u';
trans['Ф'] = 'F';
trans['ф'] = 'f';
trans['Х'] = 'H';
trans['х'] = 'h';
trans['Ц'] = 'Ts';
trans['ц'] = 'ts';
trans['Ч'] = 'Ch';
trans['ч'] = 'ch';
trans['Ш'] = 'Sh';
trans['ш'] = 'sh';
trans['Щ'] = 'Sch';
trans['щ'] = 'sch';
trans['Ъ'] = '\'';
trans['ъ'] = '\'';
trans['Ы'] = 'I';
trans['ы'] = 'i';
trans['Ь'] = '\'';
trans['ь'] = '\'';
trans['Э'] = 'E';
trans['э'] = 'e';
trans['Ю'] = 'U';
trans['ю'] = 'u';
trans['Я'] = 'Ya';
trans['я'] = 'ya';
trans['«'] = '\"';
trans['»'] = '\"';
trans['-'] = '-';
trans['—'] = '-';
trans['№'] = '#';
trans['`'] = '\'';
var result = '';
for (i = 0; i < text.length; i++) {
if ((check === 'on') && (trans[text[i]] != undefined)) {
result += trans[text[i]];
} else {
result += text[i];
}
}
document.getElementById('text').value = result;
}
<form name="msg" method="POST" id="form" action="message.php">
<input type="checkbox" name="translate" id="trans" /> Транслитерировать
<p><label>
<textarea name = "message" style = "height : 50px; width : 50%;" id = "text" placeholder = "Введите сообщение..." onkeyup="schet()" value = ""></textarea>
</label></p>
<p id="chars"></p>
<p><input type="submit" name="submit" value="Сохранить" /></p>
</form>
Ответы (2 шт):
Автор решения: Sergei Kirjanov
→ Ссылка
Не видно, где запускается send()
У вас переменная заполняется trans, a смотрится transl.
И смотрите хром/инструменты-разработчика (F12); там наверняка ошибку видно.
И еще:
Короче конструировать объект:
const trans = {
'А': 'A', 'а': 'a',
...
Если нет переприсвоений, лучше использовать const, a не var/let.
Используйте "use strict".
Автор решения: RavenTheX
→ Ссылка
Вот вам пример, без чекбокса и тд конечно, но думаю вы логику поймете
let textAreaValue = document.querySelector('textarea').textContent
let trans = []
trans['А']='A'; trans['а']='a';
trans['Б']='B'; trans['б']='b';
trans['В']='V'; trans['в']='v';
trans['Г']='G'; trans['г']='g';
trans['Д']='D'; trans['д']='d';
trans['Е']='E'; trans['е']='e';
trans['Ё']='Yo'; trans['ё']='yo';
trans['Ж']='Zh'; trans['ж']='zh';
trans['З']='Z'; trans['з']='z';
trans['И']='I'; trans['и']='i';
trans['Й']='Y'; trans['й']='y';
trans['К']='K'; trans['к']='k';
trans['Л']='L'; trans['л']='l';
trans['М']='M'; trans['м']='m';
trans['Н']='N'; trans['н']='n';
trans['О']='O'; trans['о']='o';
trans['П']='P'; trans['п']='p';
trans['Р']='R'; trans['р']='r';
trans['С']='S'; trans['с']='s';
trans['Т']='T'; trans['т']='t';
trans['У']='U'; trans['у']='u';
trans['Ф']='F'; trans['ф']='f';
trans['Х']='H'; trans['х']='h';
trans['Ц']='Ts'; trans['ц']='ts';
trans['Ч']='Ch'; trans['ч']='ch';
trans['Ш']='Sh'; trans['ш']='sh';
trans['Щ']='Sch'; trans['щ']='sch';
trans['Ъ']='\''; trans['ъ']='\'';
trans['Ы']='I'; trans['ы']='i';
trans['Ь']='\''; trans['ь']='\'';
trans['Э']='E'; trans['э']='e';
trans['Ю']='U'; trans['ю']='u';
trans['Я']='Ya'; trans['я']='ya';
trans['«']='\"'; trans['»']='\"';
trans['-']='-'; trans['—']='-';
trans['№']='#'; trans['`']='\'';
let res = ''
setTimeout(() => {
textAreaValue.split('').forEach(l => {
res += trans[l]
console.log(res)
})
}, 3000)
<textarea>привет</textarea>