Сравнение двух полей формы HTML без JavaScript

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Сглаживание значений полей формы потребует использования JavaScript-валидатора. Скрипт проверяет соответствие введенных данных при попытке отправки и препятствует ей, если значения разнятся. Вот пример реализации:

HTML
Скопировать код
<form onsubmit="return matchFields()">
  <input type="text" id="field1" required>
  <input type="text" id="field2" required>
  <button>Оправить</button>
</form>

<script>
function matchFields() {
  if (document.getElementById('field1').value === 
      document.getElementById('field2').value) {
    return true;
  } else {
    alert('Поля должны быть идентичны, как носки в паре!');
    return false;
  }
}
</script>

Этот код активизирует функцию matchFields(), которая проверяет соответствие значений полей field1 и field2 и в случае несовпадения замедляет отправку формы, подкрепяя это предупреждением.

Кинга Идем в IT: пошаговый план для смены профессии

Доброжелательная обратная связь с валидацией в реальном времени

С целью усовершенствования пользовательского опыта, рекомендуется применять JavaScript для вывода мгновенных предупреждений при валидации с использованием события oninput.

HTML
Скопировать код
<input type="password" id="password" required pattern=".{8,}" title="Минимум 8 символов">
<input type="password" id="confirm_password" required oninput="validatePassword()">
<span id="message"></span>

<script>
function validatePassword() {
  if(document.getElementById('password').value === 
     document.getElementById('confirm_password').value) {
    document.getElementById('message').innerText = '✅ Пароли совпадают!';
    document.getElementById('confirm_password').setCustomValidity('');
  } else {
    document.getElementById('message').innerText = '❌ Пароли различны!';
    document.getElementById('confirm_password').setCustomValidity('Пароли должны совпадать.');
  }
}
</script>

Таким образом, применение метода setCustomValidity() позволит выводить уведомления при обнаружении различий и напоминать пользователю о исправлении, общаясь с атрибутами pattern и title.

Верификация на стороне сервера для надежного контроля данных

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

JS
Скопировать код
// Псевдокод сервера на Node.js с использованием фреймворка Express
app.post('/submit-form', (req, res) => {
  const { password, confirmPassword } = req.body;
  if (password !== confirmPassword) {
    res.status(400).send("Пароли должны быть идентичны, это же не космонавтика!");
  } else {
    // Процесс последующего надёжного хранения пароля.
  }
});

Таким образом, всегда обязательно проводите проверку данных и на серверной стороне – помните правило "Доверяй, но проверяй".

Визуализация

Представьте два замка (🔒🔒), охраняющих сокровище (🏴‍☠️). Каждый требует свой ключ (🔑A, 🔑B). И оба замка открываются только при условии идентичности ключей.

Markdown
Скопировать код
Замок A 🔒: Ключ A (🔑A)
Замок B 🔒: Ключ B (🔑B)

Принцип взаимной проверки:

HTML
Скопировать код
<input type="text" placeholder="Введите код A 🔑A" required>
<input type="text" placeholder="Введите код B 🔑B" required oninput="validateCodeMatch(this)">
<script>
// 🔐 JavaScript полирует возможности HTML
function validateCodeMatch(input) {
  const codeA = document.querySelector('input[placeholder="Введите код A 🔑A"]');
  const codeB = input; 
  document.querySelector('.chest-status').innerText =
    codeA.value === codeB.value ? 'Открыто! 🗝️✨' : 'Закрыто 🔒';
}
</script>
<span class="chest-status">Закрыто 🔒</span>

Такая реакция на действия пользователя создаёт ощущение, что он работает с реальными замками-близнецами, что делает интерфейс понятным и удобным.

Проверка совместимости и резервные варианты

Так как не все браузеры поддерживают функции HTML5 в одинаковой степени, следует проверять совместимость, например, атрибута pattern на caniuse.com. Для браузеров, которые не распознают некоторые функции, предполагайте поддерживающие скрипты JavaScript:

JS
Скопировать код
if(!('pattern' in document.createElement('input'))) {
  // JavaScript выручает в поддержке более обиженных браузеров!
}

Такие проверки обеспечивают рабочую способность вашего приложения даже при условиях устоявшихся браузеров.

Полезные материалы

  1. Constraint validation – HTML: HyperText Markup Language | MDN — подробное описание API валидации ограничений HTML5.
  2. HTML input pattern Attribute — краткий обзор регулярных выражений для использования в атрибуте pattern HTML.
  3. JavaScript Form Validationклиентская валидация форм с помощью JavaScript, летуче и понятно.
  4. HTML Standard — стандартное описание работы атрибута required в формах HTML.
  5. ECMAScript® 2020 Language Specification — объяснение абстрактного сравнения равенства в JavaScript для точной проверки.
  6. Using data attributes – Learn web development | MDN — руководство по использованию пользовательских данных атрибутов HTML5.