Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Убрать пробелы при вводе пароля в поле формы (https://javascript.ru/forum/dom-window/83353-ubrat-probely-pri-vvode-parolya-v-pole-formy.html)

Vaska 21.11.2021 12:03

Убрать пробелы при вводе пароля в поле формы
 
Приветствую!

Делаю валидацию одного поля, ввод сложного пароля, например gD7$hs.

Не удается правильно удалять пробелы, после ввода правильного пароля.
Если пароль не проходит валидацию по правилам регулярного выражения, то пробелы успешно удаляются.
Если валидайия прошла успешно, то после этого позволяет сделать пробелы. А нужно, чтобы не позволяло сделать пробелы во всех случаях.

Вот код, который я сделал:
function validatePassword(element) {
	
    var str = element.value;
	if(!(/(?=.*[0-9])(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z])[0-9!@#$%^&*a-zA-Z]{6,}/g.test(str))){ // правильный пароль
		str = str.replace(/\s+/g, ''); //не дает сделать пробел
        element.value = str;
		layer.msg('Плохой пароль');
		} else {
		layer.msg('Хороший пароль');
    }
}

Вместо
str = str.replace(/\s+/g, '');

Можно вставить:
str = str.split(' ').join('');

Но это не решает проблему.

Подскажите, что не так я делаю?

Заранее спасибо, откликнувшимся!

voraa 21.11.2021 12:46

Зачем убирать пробелы?
Если пробелы есть, просто говорить, что пароль введен неверно. Пусть тот, кто вводил и убирает.

Vaska 21.11.2021 13:13

Нужно помогать пользователям.
Ну и мой код, после прохождения валидации пароля, при вводе пробелов - не ругается, а говорит Хороший пароль, о чём я и написал выше.

voraa 21.11.2021 13:30

Муть какая то
Цитата:

Сообщение от Vaska
Если пароль не проходит валидацию по правилам регулярного выражения, то пробелы успешно удаляются.

А почему именно пробелы? А не что то другое? Ввод пробела при вводе пароля - самая распространенная ошибка?
Цитата:

Сообщение от Vaska
Если валидайия прошла успешно, то после этого позволяет сделать пробелы.

Это как? Валидация делается перед отправкой формы. До этого пользователь может вводить что угодно.
Если валидация не прошла, то отправка отменяется, сообщение пользователю, где что не так, и пусть дальше вводит.

Vaska 21.11.2021 14:18

Вот так сделал, убирает все пробелы:
function validatePassword(element) {
    var str = element.value;
	var reg = /(?=.*[0-9])(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z])[0-9!@#$%^&*a-zA-Z]{6,}/g
	var reg2 = /\s+/g
	str = str.split(' ').join(''); //не дает сделать пробел
	if(!(reg.test(str)) || (reg2.test(str))){
        element.value = str;
		layer.msg('Плохой пароль');
		} else {
		layer.msg('Хороший пароль');
    }
}

Если можно улучшить этот код, то было бы не плохо увидеть.


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