Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Удаление двойных пробелов, удаление пустых строк в textarea (https://javascript.ru/forum/misc/76401-udalenie-dvojjnykh-probelov-udalenie-pustykh-strok-v-textarea.html)

maksmkv 09.01.2019 13:58

Удаление двойных пробелов, удаление пустых строк в textarea
 
Всем привет. Есть textarea. В ней храниться текст, в котором содержаться двойные пробелы и пустые строки. Код который сейчас использую оработает не соувсем корректно, а именно он удаляет пробелы лишние и строки получаются склеенными ((( Например: Должно быть "Привет 123", а получается "Привет123".

$(document).ready(function () {
    $('#que1').focusin(function () {
        var text = $('#que1').val();
        text = text.replace(/\r?\n/g, "");
        $(this).val(text);
    });
});


Как можно исправить? И еще вопрос - изменения вступают после наведения фокуса на textarea, а как сделать что бы при нажатии кнопки текст сначала проходил форматирование, а потом далее по коду нажатия кнопки выполнялись действия? Спасибо.

laimas 09.01.2019 15:55

/\r?\n{2,}/g

maksmkv 09.01.2019 16:08

Не работает (((

laimas 09.01.2019 16:31

Цитата:

Сообщение от maksmkv
Не работает

Ну правильно, ибо Ctrl + C. Надо не на пустоту заменять два и более переноса, а на перенос.

PS. Да и я тоже хорош, скопировал и... правильно так /(\r?\n){2,}/

maksmkv 09.01.2019 20:49

Вот такое еще решение получилось найти, выше код не
совсем верно работает str.replace(/\s+/g,' ')

laimas 10.01.2019 12:41

Тогда я не понимаю чего нужно. Речь шла об удалении лишних переносов строк, причем тут пробелы? Переносы удалить, это:

<pre id="str"></pre>

<script>
var s = `Hello
1111
Hello



2222

Hello


3333`;

document.getElementById('str').textContent = s.replace(/(\r?\n){2,}/g, '$1');
</script>

maksmkv 12.01.2019 11:48

Спасибо. Почему не срабатывает в таком виде? Суть добавил текст, нажал кнопку, удалились все пробелы, табы и прочие переносы строк - получил результат в textarea.
<script src="http://code.jquery.com/jquery-latest.js"></script>
...
<textarea id="que1"></textarea>
<input type="button" value="Вывод" onclick=Ext_Out()>   
...


function Ext_Out()
{
var que1_text = $("#que1").val();

$(document).ready(function () {
    $('#que1').focus(function () {
        var text = $('#que1').val();
	text = text.replace(/(\r?\n){2,}/g, '$1');

        $(this).val(text);
    });
});


Строку ввел:

123123123
342423
 12312313131 312 31 23    3123211312123

laimas 12.01.2019 12:44

А где вы увидели, чтобы обработчик события загрузки документа определялся вызовом функции?

maksmkv 12.01.2019 12:53

Не очень понял (((, знаний пока не хватает. Читаю книги по JS, но по работе столкнулся раньше с формами и приходится пропускать часть курсов. Поэтому есть ошибки и не понимание. Даже если обработчик добавить на страницу с HTML и записать focusin - все равно не срабатывает (

laimas 12.01.2019 13:50

$(document).ready(function () ... это функция, которая запустится после загрузки документа, то есть тогда, когда будет сформирован DOM и когда на элементы можно устанавливать обработчики. Для того чтобы реабилитироваться за пропущенные уроки, ответьте себе сами, что происходит у вас в вашем коде, когда вы данную функцию упрятали в пользовательскую функцию.

<html>
<head>
<meta charset="utf-8">
<title>aaa</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
$(function() { //тоже самое что и $(document).ready(function () ...
    $('#que1').focus(function () {
        this.value = this.value.replace(/(\r?\n){2,}/g, '$1');
    });  
});
</script>
</head>
<body>
<textarea id="que1"></textarea>
</body>
</html>


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