Обрезать пробелы значения на входе - PullRequest
0 голосов
/ 25 декабря 2018

Помощь, необходимая для новичка.Я с трудом удаляю пробелы из ввода в форме отправки.Вот способ, которым я пытался это сделать:

var usernameInput = document.querySelector('.setup-user-name');
var newValue = usernameInput.value.trim();
usernameInput.value = newValue;

После того, как эта форма должна пройти проверку таким образом:

usernameInput.addEventListener('invalid', function () {
  if (usernameInput.validity.tooShort) {
    usernameInput.setCustomValidity('Имя должно состоять минимум из 2-х 
символов');
  } else if (usernameInput.validity.valueMissing) {
    usernameInput.setCustomValidity('Обязательное поле');
  } else {
    usernameInput.setCustomValidity('');
  }
});

Несмотря на то, что я использую метод trim, я все ещевозможность отправить форму с пробелами на входе.

Ответы [ 2 ]

0 голосов
/ 25 декабря 2018

Вы можете запретить пользователям вводить имена пользователей, содержащие начальные или конечные пробелы, используя атрибут html pattern и используя регулярное выражение, чтобы определить, как выглядит приемлемое имя пользователя:

<p>Try entering a value with leading and/or trailing spaces</p>
<p>If the form disappears that means the value was accepted</p>
<form enctype"...">
  <input class="setup-user-name" placeholder="username" pattern="^[^ ].+[^ ]$" />
  <input type="submit" value="submit" />
</form>

Вы заметите, что я использовал здесь регулярное выражение:

^[^ ].+[^ ]$

  • Начальный символ в каратах (^) означает «начало строки».
  • Последовательность [^ ] означает «любой символ, кроме пробела»
  • Последовательность .+ означает «что-либо вообще; минимум 1»символ "
  • Последовательность [^ ] снова означает" любой символ, кроме пробела "
  • Последний символ $ означает" конец строки "

Это регулярное выражение определяет «приемлемое» значение как значение, которое не имеет пробела непосредственно после начала строки или непосредственно перед концом строки.

0 голосов
/ 25 декабря 2018

Метод усечения Javascript удаляет только пробелы с обеих сторон строки.

var str = "  this is sample string  "
console.log(str.trim()) // "this is sample string"

, если вы хотите удалить все пробелы, вы можете использовать метод замены

var str = "  this is sample string  "
console.log(str.replace(/\s/g, "")) // "thisissamplestring"

, если выЕсли подумать о проверке, тогда вы должны использовать свою собственную проверку или использовать другие библиотеки для проверки, эти методы только возвращают новую строку указанного значения и не выполняют никакой проверки

...