Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   обработка текста из textarea на js (https://javascript.ru/forum/misc/39946-obrabotka-teksta-iz-textarea-na-js.html)

chiffenok 18.07.2013 09:08

обработка текста из textarea на js
 
Добрый день.
У меня вопрос. Есть textarea с таким текстом, отбитый enter. Потом этот текст выводится в div на другой странице но уже в 1 строчку. Слепленый текст без точек и пробелов смотрится не красиво. Можно ли на js(jquery) отслеживать этот текст, смотреть строчки где нету точек в конце и добавлять их? Или это можно сделать токо на php?
Код:

Здравствуйте , я ваша тетя
Пора завтракать.
Пора ужинать


ОлегА 18.07.2013 09:20

можно отлавливать переводы строк и заменять их на <br /> или тоже самое и заменять на .

skrudjmakdak 18.07.2013 09:21

var str = 'Здравствуйте , я ваша тетя \r\nПора завтракать.\r\nПора ужинать';
console.log(str.split('\r\n').join('.'))

ОлегА 18.07.2013 09:22

str.replace(/\r\n/g,"<br />")
или
str.replace(/\r\n/g,".")


http://javascript.ru/String/replace

skrudjmakdak 18.07.2013 09:25

Цитата:

Сообщение от ОлегА (Сообщение 262883)
можно отлавливать переводы строк и заменять их на <br /> или тоже самое и заменять на .

причем тут <br>???

ОлегА 18.07.2013 09:26

skrudjmakdak, чтобы текст на странице смотрелся так же как и в textarea

chiffenok 18.07.2013 09:29

ОлегА,
не нужно , разделять br , надо токо точки ставить там где их нету

а как проверить кст если в конце строчи точка или нет?

skrudjmakdak 18.07.2013 09:29

<!DOCTYPE html>
<html>
	<head>
	</head>
	<body>
		<textarea onblur="e(this);"></textarea>
		<div id="d"></div>
		<script type="text/javascript">
		function e(ths)
			{
			document.getElementById('d').innerHTML = ths.value.split('\n').join('.');
			}
		</script>

	</body>
</html>

dmitriymar 18.07.2013 09:30

http://htmlbook.ru/html/pre

ОлегА 18.07.2013 09:34

pre - это не красиво

skrudjmakdak 18.07.2013 09:44

<!DOCTYPE html>
<html>
	<head>
	</head>
	<body>
		<textarea onblur="e(this);"></textarea>
		<div id="d"></div>
		<script type="text/javascript">
		function e(ths)
			{
			var ar = ths.value.split('\n');
			for(var i = 0; i < ar.length; i++)
				ar[i] = ar[i] + ((/^.*[.]$/.test(ar[i])) ? '' : '.');

			document.getElementById('d').innerHTML = ar.join(' ');
			}
		</script>

	</body>
</html>

ОлегА 18.07.2013 09:46

str = 'Здравствуйте , я ваша тетя \r\nПора завтракать.\r\nПора ужинать';
str = str.replace(/([\s\.]\r\n|$)/g,".");
alert(str)

skrudjmakdak 18.07.2013 09:57

ОлегА, что то ваш вариант у меня не идет:
<!DOCTYPE html>
<html>
	<head>
	</head>
	<body>
<textarea onblur="e(this);">Здравствуйте , я ваша тетя
Пора завтракать.
Пора ужинать</textarea>
		<div id="d"></div>
		<script type="text/javascript">
		function e(ths)
			{
			document.getElementById('d').innerHTML = ths.value.replace(/([\s\.]\r\n|$)/g,".");
			}
		</script>

	</body>
</html>

ОлегА 18.07.2013 10:07

<!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
<textarea onblur="e(this);">Здравствуйте , я ваша тетя
Пора завтракать.
Пора ужинать</textarea>
    <div id="d"></div>
    <script type="text/javascript">
    function e(ths)
      {
      document.getElementById('d').innerHTML = ths.value.replace(/((\s|\.|)?\n|$)/g,".");
      }
    </script>

  </body>
</html>

edison 18.07.2013 20:49

Учитывайте пробелы после точки, два переноса строки )))
var str="Здравствуйте , я ваша тетя\nПора завтракать.\r\nПора ужинать \r\nЗдравствуйте , я ваша тетя\r\n\r\n\r\nПора завтракать.   \nПора ужинать.";
str=(str?str+"\n":str).split(/\.?\s*$/mg).join(".");
alert(str);

chiffenok 19.07.2013 07:22

там нужно учитывать не только пробелы , и все знаки препинания тоже, да лучше убирать лишние пробелы но у меня ни как не получается сделать и то и то,
текст мне нужно вставлять прямо в тот же textarea
<!DOCTYPE html>
<html>
	<head>
	</head>
	<body>
		<textarea id='ta'  cols="30" rows="10" onblur="e(this);"></textarea>
		<div id="d"></div>
		<script type="text/javascript">
		function e(ths)
			{
			var ar = ths.value.split('\n');
			for(var i = 0; i < ar.length; i++)
				if ( ar[i] != '' ) { 
					ar[i] = ar[i] + ((/^.*[\.\?\!\,]$/.test(ar[i])) ? '' : '.');
				}
				document.getElementById('ta').value = ar.join(' ');
			}
		</script>

	</body>
</html>

edison 19.07.2013 07:55

<!DOCTYPE html>
<html>
	<head>
	</head>
	<body>
		<textarea id='ta' cols="30" rows="10" onblur="e(this);">
Здравствуйте , я ваша тетя
   Пора завтракать.
Пора ужинать
Здравствуйте , я ваша тетя?

Да не, ты дядя!!!

 Пора завтракать,   
Пора ужинать.     </textarea>
		<div id="d"></div>
		<script type="text/javascript">
		function e(ths)
			{
			var ar = ths.value.replace(/(^\s+|\s+$)/g,'').split(/\s*\n\s*/);
			for(var i = 0,s=ar.length; i < s; i++)
				if (ar[i]) { 
					ar[i] = ar[i] + ((/[\.\?!,]$/.test(ar[i])) ? '' : '.');
				}
				document.getElementById('ta').value = ar.join(' ');
			}
		</script>

	</body>
</html>

chiffenok 22.07.2013 13:43

edison
вот еще вопрос как перевести только 1ую букву в верхний регистр если строка начинается с маленькой буквы?

ruslan_mart 22.07.2013 13:47

var str = 'hello world!';
str = str.substr(0, 1).toUpperCase() + str.substr(1);

alert(str);


Можно так попробовать.


Часовой пояс GMT +3, время: 09:17.