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 12.01.2019 14:47

Понятно, что работать не будет согласен. Уже понял, тогда опять же вопрос: вот исходный текст например

Тест     тест  тест  привет
Привет



123 123   123


Ввожу, а получается так:
Тест     тест  тест  привет
Привет
123 123   123


Повторный фокус на объект не убирает пробелы. Это можно исправить? СПАСИБО, что помогаете.

laimas 12.01.2019 15:03

Тоже самое что и с переводами - заменять два пробела и более на пробел.

maksmkv 12.01.2019 16:04

СПАСИБО, все получилось, тему можно закрывать.

Malleys 13.01.2019 12:10

Цитата:

Сообщение от laimas
заменять два пробела и более на пробел

Или удалять все пробельные символы идущие подряд (включая переводы строк), кроме первого
<textarea id="que1"></textarea>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
	
$("#que1").focus(function() {
	this.value = this.value
		.replace(/(?<=\p{White_Space})\p{White_Space}+/gu, "")
})
	
</script>

laimas 13.01.2019 13:00

Цитата:

Сообщение от Malleys
Или удалять все пробельные символы идущие подряд ...

Это уже к автору, какова поддержка ему нужна, в старом такое выражение не будет работать.

laimas 13.01.2019 13:37

Malleys, кстати, я вообще считаю, что многие здесь, выставляя код свой, допускают вольности с легкостью оперируя нововведениями Javascript. Оно конечно проще, круто/красиво, но для большей части авторов постов вообще не понятно. Написали, тут работает, себе на сайт скопировал и в своем браузере видит, что работает, и слава богу, значит вопрос решен. А то что этот код будет работать с условием, этого они не знают, а тот кто выставляет код не считает нужным предупредить об этом.

То есть, по умолчанию как бы подразумевается, что "зеленый" в курсе или настал коммунизм и старое давно умерло. К сожалению это не так, живучи и старые, и заказчики не редкость хотят поддержки браузеров инвалидов, хотя зачастую даже и не знают есть ли у них таковые пользователи. А вот если "клюнет", тогда начинаются проблемы, но если для автора кода понять ее, это будет пустяк, то для того кто скопировал, это проблема. Да они могут подолгу даже не подозревать об этом, пока кто-то не сообщит.

Бывает так, что и слова лишнего в теме написать некогда, согласен с этим, поэтому утруждать себя еще и разъяснениями не охота. :) Но бог мой, у нас же форум по вопросам программирования, и создали его не люди со стороны. А значит в свете всяких новых фич в JS, CSS, ... было бы полезно кроме возможности добавления к ВВ коду запуска его и прочего, просто ткнуть кнопку NEW, и блок кода будет предварять сообщение - "Только ECMA ..." и т.п.

Malleys 13.01.2019 20:11

Цитата:

Сообщение от laimas
код будет работать с условием... тот кто выставляет код не считает нужным предупредить об этом

🚀 Я пишу ответы в соответствий с последним стандартом языка. На данный момент таковым является девятое издание спецификации ECMAScript2018📜. Это ядро языка, и оно хорошо поддерживается большинством последних версии браузеров, а также в NodeJS.
✨ Среди браузерынх API используются те, которые имеют статус «Рекомендация» или «Кандидат на рекомендацию» (в последнем случае может приводиться ссылка на таблицу поддержки в разных браузерах от caniuse.com 💪 ).

Цитата:

Сообщение от laimas
старое давно умерло

☠ На самом деле нет! 🕱 📜Берётся старая спецификация (которая когда-то была стандартом) + 💭к ней приписываются какие-то новые вещи = 💥новая спецификация! Т. е. вы можете и сейчас писать при помощи синтаксиса ECMAScript3 — это нормально! 😻

Цитата:

Сообщение от laimas
заказчики не редкость хотят поддержки браузеров инвалидов

Нормальные здоровые люди используют Chrome🍭 или Safari🍭 или Firefox🍭 или в крайнем случае Edge.
Ну а желанная поддержка IE6💩 — это определённо нездоровая радость, что у тебя работает в IE6💩 прямо как в 🍭, т. е. так, как надо, а у других нет!
Я же считаю, что для супер старых браузеров возможно (ведь в старом браузере можно вывести просто какую-то общую информацию, или автоматический переход на старую версию веб-приложения, когда оно ещё работало (если есть)) нужна отдельная версия (HTML4 + CSS2(когда было всё в одну кучу) + ECMAScript3)), но это означает и то, что заказчик готов платить вдвое-втрое больше и получить дупликат продукта, который хуже!📈

Да и вообще зачем вам поддержка в 💩, если все используют 🍭? Тем более это бесплатное программное обеспечение! Впридачу 🍭 само обновляется! А 💩 как было 💩, так и осталось 💩!

Цитата:

Сообщение от laimas
Оно конечно проще, круто/красиво, но для большей части авторов постов вообще не понятно.

Раз проще, то и проще понимать! По-моему соорудить нагромождение коллбеков и понять как оно работает намного сложнее, чем изучить import и async.

Цитата:

Сообщение от laimas
с легкостью оперируя нововведениями Javascript

Я такого не замечал! Все используют в основном то, что стандартизировано и, соответственно, без всяких упрёков может использоваться!

Но могу показать, что будет возможно стандартизировано в ES2019 или ES2020.

ОСТОРОЖНО!!! Далее идет нестандартный код (возможно вам надо что-то включить в about:///flags или не надо)

Конструктор BigInt и литералы целого числа. Пример вычисляет 50 000-ое число Фиббонначи.
<style>body {	word-break: break-all; }</style><script>
const n = 50000n;
document.write(`F(${n}) = ${fib(n)}`);

function fib(n) {
    if(n >= 0n)
        return fibHelper(0n, 1n, 0n, 1n, n);
    else
        return (-1n) ** (1n - n) * fib(-n);

    function fibHelper(x, y, x1, y1, n) {
        if(n == 0n)
            return x;

        if(n % 2n == 0n)
            return fibHelper(
                x, y,
                x1 ** 2n + y1 ** 2n, y1 ** 2n + 2n * x1 * y1,
                n / 2n
            );

            return fibHelper(
                y * y1 + x * x1, y * x1 + (x + y) * y1,
                x1, y1,
                n - 1n
            );
    }
}
</script>
(Алгоритм быстрого вычисления переведён из Haskell)

поля в классе
class Test {
	x = 5;
	[Symbol.for("test")] = /a/gi;
	#y = 67;
	static str = s => `"${s}"`;
}

console.log(new Test()); // попробуй найти, где y


метод flatMap можно использовать, например, чтобы одновременно применить filter и map. В примере из массива чисел выбираются нечётные, а затем умножаются на два.
console.log([2, 3, 5, 6, 7, 11, 12, 15].flatMap(x => x % 2 !== 0 ? [2 * x] : []));


разделитель в числовом литерале
alert(100_000_001);
alert(123_456_789_101_112n);


"Сканирование" строки. Выводит у каждого числа последнюю цифру.
for(const [number, lastDigit] of "12 hello 2019 abc 666 1".matchAll(/\d*(\d)/g)) {
	console.log(lastDigit);
}

laimas 13.01.2019 21:06

Летом прошлого года мне нужно было купить плитку кафельную, а самая подходящая по размеру, чтобы не резать последний верхний ряд, это 20х40. Но на сайте, где я ее хотел заказать с доставкой, нет фильтра по размеру, можно было иным путем поискать, хотя и трудоемким, но попытка закончилась неудачей - ошибки. Пришлось искать у других, брать у них списки найденных, и потом уже по ним искать (тоже не не поиском в форме, а одним глазом в одно, другим в другое) там где нужно было делать заказ.

Этот интернет магазин оказывается как "интернет филиал" реального магазина, в котором заведует женщина. При оформлении заказа я заметил на неудобство для покупателей (и как следствие плюс для конкурентов) отсутствия фильтра с параметрами расширенными, а также на ошибки, которые не позволяют производить некоторые операции на сайте.

А так как прямо на сайте предлагается его оценка и пожелания (куда я не стал писать), то меня поблагодарили и конечно заверили, что добавят и исправят. Я не могу определить по ее имени и фамилии блондинка ли она, "нормальный здоровый" ли она человек, не знаю кто создатель сайта, но воз и ныне там. А мне еще нужно будет подбирать плитку у них на лето текущего года. :)

Ошибок масса встречается и всяких разных, а уровню знаний многих вопрошающих не мешало бы простого сообщения - "Внимание! Для выполнения кода требуется поддержка со стороны браузера!" (или что-то в этом духе) с акцентом цветом. Ну какие им выкладки вами приведенные? Им полемика ни к чему, главное заострить внимание, может спросит что к чему, вот тогда можно и пояснить.

В описании лекарства пишут о наличии или отсутствии побочных явлений, а форум, это "аптека продающая в том числе и лекарства с возможно побочными явлениями", но писать это в инструкции не желающая. :)

Если бы все было так радужно как вы написали (нормальные люди, все просто как два пальца ...), мы бы все, а не только "нормальные здоровые", жили припеваючи. ;)


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