Пользовательские сообщения проверки формы JavaScript и минимальная длина поля

Я пытаюсь использовать JavaScript для проверки ввода простой формы. Есть три поля:

  • Имя - обязательное текстовое поле, не может быть пустым

  • Электронное письмо - обязательное поле электронной почты, которое должно быть из домена domain.com.au

  • Почтовый индекс - это обязательное числовое поле длиной 4 символа.

Я также хотел бы, чтобы пользовательские сообщения об ошибках отображались справа от полей, а не отображались всплывающие окна системы.

На данный момент первые два поля проверены правильно, но пользовательские сообщения не отображаются. Поле почтового индекса не проверяется, за исключением того, что в нем должен быть хотя бы один номер.

Начинающий JavaScript, пожалуйста, будьте любезны.

function validation() {
  var emailPattern = new RegExp('\w.%+-]+@domain\.com\.au');

  if (document.getElementById("name").value.length == 0) {
    document.getElementById("nameAlert").innerHTML = "<em> Please enter name here</em>";
    return false;
  } else if (emailPattern.test(document.getElementById("email").value) = false) {
    document.getElementById("emailAlert").innerHTML = "<em> Your email must include @domain.com.au </em>";
    return false;
  } else if (document.getElementById("postcode").value.length != 4) {
    document.getElementById("postcodeAlert").innerHTML = "<em> Your postcode must be four characters long </em>";
    return false;
  } else return true;
}
<form method = "POST" action = "#" onsubmit = "return validation();">
  <label for = "name">Name</label>
  <input type = "text" name = "name" id = "name"><span id = "nameAlert"></span><br><br>
  <label for = "email">Email</label>
  <input type = "text" name = "email" id = "email" pattern = "[\w.%+-]+@domain\.com\.au"><span id = "emailAlert"></span><br><br>
  <label for = "postcode">Postcode</label>
  <input type = "text" name = "postcode" id = "postcode" pattern = "^[0-9]{4}"><span id = "postcodeAlert"></span><br><br>
  <button type = "submit">Submit Query</button>
</form>

Обратите внимание на </inpt>.

CertainPerformance 10.05.2018 08:53

Спасибо, я изменил это - все еще не работает

Kate 10.05.2018 08:56

Нет закрывающих тегов для inputw3schools.com/tags/tag_input.asp

Krzysztof Janiszewski 10.05.2018 09:09

Спасибо @Krzysztof Janiszewski, я удалил их, но без радости

Kate 10.05.2018 09:16

Для всех я вижу сообщение отображается. Попробуйте удалить reuquired из тега input, и вы увидите, что ваш код javascript работает. Также я не думаю, что type = "number" - хорошее решение для почтового индекса.

Krzysztof Janiszewski 10.05.2018 09:24

Спасибо, я удалил все необходимые теги, и теперь настраиваемое сообщение отображается для поля имени, но не для остальных. Проверка длины поля почтового индекса, похоже, работает для типа текста, но не для числового типа, поэтому я изменил шаблон RegExp на «^ [0-9] {4}», и теперь он работает! Вот если бы я только мог получать настраиваемые сообщения для последних двух полей.

Kate 10.05.2018 09:38

Когда вы обнаружите проблемы, описанные в Комментарии, отредактируйте свой вопрос, чтобы люди могли видеть, где вы сейчас находитесь, чтобы можно было легко определить следующую проблему / ответить на нее.

CertainPerformance 10.05.2018 10:03
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
7
555
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У вас есть оператор if и else. Таким образом, если первое условие истинно, другие не будут проверяться, поэтому отображается только одно сообщение.

Вот рабочий пример

function validation() {
  var emailPattern = new RegExp('\w.%+-]+@domain\.com\.au');
  var isOk = true;

  if (document.getElementById("name").value.length == 0) {
    document.getElementById("nameAlert").innerHTML = "<em> Please enter name here</em>";
    isOk = false;
  }

  if (emailPattern.test(document.getElementById("email").value) == false) {
    document.getElementById("emailAlert").innerHTML = "<em> Your email must include @domain.com.au </em>";
    isOk = false;
  }

  if (document.getElementById("postcode").value.length != 4) {
    document.getElementById("postcodeAlert").innerHTML = "<em> Your postcode must be four characters long </em>";
    isOk = false;
  }

  return isOk;
}
<form method = "POST" action = "#" onsubmit = "return validation();">
  <label for = "name">Name</label>
  <input type = "text" name = "name" id = "name"><span id = "nameAlert"></span><br><br>
  <label for = "email">Email</label>
  <input type = "text" name = "email" id = "email" pattern = "[\w.%+-]+@domain\.com\.au"><span id = "emailAlert"></span><br><br>
  <label for = "postcode">Postcode</label>
  <input type = "number" name = "postcode" id = "postcode" pattern = "^[0-9]{4}"><span id = "postcodeAlert"></span><br><br>
  <button type = "submit">Submit Query</button>
</form>

Спасибо, вы избавили меня от гораздо большего разочарования!

Kate 10.05.2018 10:37

Другие вопросы по теме