Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.01.2019, 11:04
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

Перенос строки при транслитерации
Добрый день. Есть функция:
function translit_to_eng(txt) {
	match  = new Array
("a","b","v","q","d","e","ə","j","z","i","y","k","l","m","n","o","p", "r","s","t","u","f","x","c","ç","ş","h","ı","ğ","g","ö","ü","A","B", "V","Q","D","E","Ə","J","Z","İ","Y","K","L","M","N","O","P","R", "S","T","U","F","X","C","Ç","Ş","H","I","Ğ","G","Ö","Ü","1","2","3","4","5","6","7","8","9","0","?","!","-"," ",":",",",".","\n");
	replace = new Array
("а","б","в","г","д","е","ә","ж","з","и","ј","к","л","м","н","о","п", "р","с","т","у","ф","х","ҹ","ч","ш","һ","ы","ғ","ҝ","ө","ү","А","Б", "В","Г","Д","Е","Ә","Ж","З","И","Ј","К","Л","М","Н","О","П","Р", "С","Т","У","Ф","Х","Ҹ","Ч","Ш","Һ","Ы","Ғ","Ҝ","Ө","Ү","1","2","3","4","5","6","7","8","9","0","?","!","-"," ",":",",",".","\n");
	Input = txt;
	Output = "";
	for(var i=0;i<Input.length;i++) {
		ch = "";
		for(var j=0;j<match.length;j++)
			if(Input.charAt(i) == match[j])
				ch = replace[j];
		Output += ch;
	}
	return Output;
}

Производи транслитерацию с одних символов на другие. Однако перенос строк не работает. Подскажите, как решить проблему?
Ответить с цитированием
  #2 (permalink)  
Старый 02.01.2019, 11:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Янковиц,
где пример с проблемой?
в коде ниже её нет.
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">


</head>

<body>
<textarea name="" rows="8">
       test
 test
</textarea>

 <script>
function translit_to_eng(txt) {
	match  = new Array
("a","b","v","q","d","e","ə","j","z","i","y","k","l","m","n","o","p", "r","s","t","u","f","x","c","ç","ş","h","ı","ğ","g","ö","ü","A","B", "V","Q","D","E","Ə","J","Z","İ","Y","K","L","M","N","O","P","R", "S","T","U","F","X","C","Ç","Ş","H","I","Ğ","G","Ö","Ü","1","2","3","4","5","6","7","8","9","0","?","!","-"," ",":",",",".","\n");
	replace = new Array
("а","б","в","г","д","е","ә","ж","з","и","ј","к","л","м","н","о","п", "р","с","т","у","ф","х","ҹ","ч","ш","һ","ы","ғ","ҝ","ө","ү","А","Б", "В","Г","Д","Е","Ә","Ж","З","И","Ј","К","Л","М","Н","О","П","Р", "С","Т","У","Ф","Х","Ҹ","Ч","Ш","Һ","Ы","Ғ","Ҝ","Ө","Ү","1","2","3","4","5","6","7","8","9","0","?","!","-"," ",":",",",".","\n");
	Input = txt;
	Output = "";
	for(var i=0;i<Input.length;i++) {
		ch = "";
		for(var j=0;j<match.length;j++)
			if(Input.charAt(i) == match[j])
				ch = replace[j];
		Output += ch;
	}
	return Output;
}
var elem = document.querySelector("textarea"),
    text = elem.value;
elem.value = translit_to_eng(text)
  </script>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 02.01.2019, 11:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Янковиц,
попробуйте так
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">


</head>

<body>
<textarea name="" rows="8">
       test
 test
</textarea>

 <script>
function translit_to_eng(txt) {
	match  = new Array
("a","b","v","q","d","e","ə","j","z","i","y","k","l","m","n","o","p", "r","s","t","u","f","x","c","ç","ş","h","ı","ğ","g","ö","ü","A","B", "V","Q","D","E","Ə","J","Z","İ","Y","K","L","M","N","O","P","R", "S","T","U","F","X","C","Ç","Ş","H","I","Ğ","G","Ö","Ü","1","2","3","4","5","6","7","8","9","0","?","!","-"," ",":",",",".","\n");
	replace = new Array
("а","б","в","г","д","е","ә","ж","з","и","ј","к","л","м","н","о","п", "р","с","т","у","ф","х","ҹ","ч","ш","һ","ы","ғ","ҝ","ө","ү","А","Б", "В","Г","Д","Е","Ә","Ж","З","И","Ј","К","Л","М","Н","О","П","Р", "С","Т","У","Ф","Х","Ҹ","Ч","Ш","Һ","Ы","Ғ","Ҝ","Ө","Ү","1","2","3","4","5","6","7","8","9","0","?","!","-"," ",":",",",".","\n");
	Input = txt;
	Output = "";
	for(var i=0;i<Input.length;i++) {
		ch = Input.charAt(i);
		for(var j=0;j<match.length;j++)
			if(ch == match[j])
				ch = replace[j];
		Output += ch;
	}
	return Output;
}
var elem = document.querySelector("textarea"),
    text = elem.value;
elem.value = translit_to_eng(text)
  </script>
</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 02.01.2019, 11:39
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

Функция повешена на обработчик:
$('#eng').keyup(function(){
		var txt = $(this).val();
		var result = translit_to_eng(txt);
		$('#rus').text(result);
		return false;
    });

То есть, при вставке текста все переносы исчезают
Ответить с цитированием
  #5 (permalink)  
Старый 02.01.2019, 11:50
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Янковиц
То есть, при вставке текста все переносы исчезают
В HTML перенос, это <br>.
Ответить с цитированием
  #6 (permalink)  
Старый 02.01.2019, 12:01
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

То есть, в массиве replace нужно заменить \n на <br>?
Ответить с цитированием
  #7 (permalink)  
Старый 02.01.2019, 12:11
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Янковиц
То есть, в массиве replace нужно заменить \n на <br>?
Ну если вставляется текст в элемент $('#rus').text(result);, то ожидать, что будет перенос по \n не стоит, нужно вставлять как html, а значит не \n, а <br>. В коде рони явно же указывается на вашу проблему - ложные ожидания.
Ответить с цитированием
  #8 (permalink)  
Старый 02.01.2019, 12:22
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Кстати, заменять надо не \n, а в зависимости от платформы источника текста, а это могут быть: \r, \n или \r\n.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Корректное удаление строки из таблицы Alex57B Элементы интерфейса 4 16.09.2018 23:48
Перенос строки js sergey24 Общие вопросы Javascript 2 12.01.2017 23:23
Подружить два скрипта (скроллер+скрипт эффекта при наведении) Che jQuery 26 29.08.2012 10:59
Убрать символы переноса строки при копировании. PashPP (X)HTML/CSS 4 17.08.2012 18:21
Сообщение при копировании строки адреса сайта ullltra Общие вопросы Javascript 2 19.11.2009 18:04