09.01.2019, 13:58
|
Интересующийся
|
|
Регистрация: 22.09.2016
Сообщений: 22
|
|
Удаление двойных пробелов, удаление пустых строк в textarea
Всем привет. Есть textarea. В ней храниться текст, в котором содержаться двойные пробелы и пустые строки. Код который сейчас использую оработает не соувсем корректно, а именно он удаляет пробелы лишние и строки получаются склеенными ((( Например: Должно быть "Привет 123", а получается "Привет123".
$(document).ready(function () {
$('#que1').focusin(function () {
var text = $('#que1').val();
text = text.replace(/\r?\n/g, "");
$(this).val(text);
});
});
Как можно исправить? И еще вопрос - изменения вступают после наведения фокуса на textarea, а как сделать что бы при нажатии кнопки текст сначала проходил форматирование, а потом далее по коду нажатия кнопки выполнялись действия? Спасибо.
|
|
09.01.2019, 15:55
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
/\r?\n{2,}/g
|
|
09.01.2019, 16:08
|
Интересующийся
|
|
Регистрация: 22.09.2016
Сообщений: 22
|
|
Не работает (((
|
|
09.01.2019, 16:31
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от maksmkv
|
Не работает
|
Ну правильно, ибо Ctrl + C. Надо не на пустоту заменять два и более переноса, а на перенос.
PS. Да и я тоже хорош, скопировал и... правильно так /(\r?\n){2,}/
Последний раз редактировалось laimas, 09.01.2019 в 16:55.
|
|
09.01.2019, 20:49
|
Интересующийся
|
|
Регистрация: 22.09.2016
Сообщений: 22
|
|
Вот такое еще решение получилось найти, выше код не
совсем верно работает str.replace(/\s+/g,' ')
|
|
10.01.2019, 12:41
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Тогда я не понимаю чего нужно. Речь шла об удалении лишних переносов строк, причем тут пробелы? Переносы удалить, это:
<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>
|
|
12.01.2019, 11:48
|
Интересующийся
|
|
Регистрация: 22.09.2016
Сообщений: 22
|
|
Спасибо. Почему не срабатывает в таком виде? Суть добавил текст, нажал кнопку, удалились все пробелы, табы и прочие переносы строк - получил результат в 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
Последний раз редактировалось maksmkv, 12.01.2019 в 12:16.
|
|
12.01.2019, 12:44
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
А где вы увидели, чтобы обработчик события загрузки документа определялся вызовом функции?
|
|
12.01.2019, 12:53
|
Интересующийся
|
|
Регистрация: 22.09.2016
Сообщений: 22
|
|
Не очень понял (((, знаний пока не хватает. Читаю книги по JS, но по работе столкнулся раньше с формами и приходится пропускать часть курсов. Поэтому есть ошибки и не понимание. Даже если обработчик добавить на страницу с HTML и записать focusin - все равно не срабатывает (
|
|
12.01.2019, 13:50
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
$(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>
|
|
|
|