Почему не отображается сообщение об ошибке для ввода электронной почты? - PullRequest
0 голосов
/ 20 апреля 2020

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

  • Если я отправляю форму без ввода данных, приложение abide правильно отображает оба сообщения об ошибке проверки.
  • Если Я ввожу только ввод в сообщение textarea и оставляю электронное письмо input пустым, а затем запрещает отправку формы, но не отображает сообщение об ошибке. Он просто помечает письмо input как недействительное.
  • Если я введу действительный адрес электронной почты и оставлю сообщение textarea пустым, то в программе abide будут показаны оба сообщения об ошибке проверки, хотя адрес электронной почты правильный.

Вы можете проверить это на jsbin: https://output.jsbin.com/cacucunama

Пример минимального запуска (аналогично jsbin):

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>ZURB Foundation Abide form validation error</title>
    <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
    <link rel="stylesheet" type="text/css"
        href="https://cdn.jsdelivr.net/npm/foundation-sites@6.6.3/dist/css/foundation.min.css">
    <script type="text/javascript"
        src="https://cdn.jsdelivr.net/npm/foundation-sites@6.6.3/dist/js/foundation.min.js"></script>
</head>

<body>
    <form action="#" method="get" enctype="multipart/form-data" data-abide novalidate id="footer-contact-form">
        <div class="input-group">
            <span class="input-group-label">N</span>
            <input name="user[name]" value="" type="text" id="footer-contact-form--name" class="input-group-field"
                placeholder="Name">
        </div>
        <div class="input-group">
            <span class="input-group-label">@</span>
            <input name="user[email]" value="" type="email" id="footer-contact-form--email" class="input-group-field"
                placeholder="Email address*" required pattern="email">
        </div>
        <label class="form-error" data-form-error-for="footer-contact-form--email">Valid email required.</label>
        <textarea name="user[message]" id="footer-contact-form--message" placeholder="Message*" rows="3"
            required=""></textarea>
        <label class="form-error" data-form-error-for="footer-contact-form--message">A message is required.</label>
        <button value="" type="submit" class="button expanded">Send</button>
    </form>
</body>

</html>

1 Ответ

1 голос
/ 21 апреля 2020

Как уже ответили на https://foundation.discourse.group/t/abide-doesnt-show-the-correct-validation-error-message/2276/10, вы забыли обернуть метку + элементы ввода в детали с помощью ввода электронной почты и сообщения textarea.

https://codepen.io/DanielRuf/pen/dyYpjYZ

Работает со следующим кодом:

<form action="#" method="get" enctype="multipart/form-data" data-abide novalidate id="footer-contact-form">
        <div class="input-group">
            <span class="input-group-label">N</span>
            <input name="user[name]" value="" type="text" id="footer-contact-form--name" class="input-group-field"
                placeholder="Name">
        </div>
        <div>
              <div class="input-group">
                  <span class="input-group-label">@</span>
                  <input name="user[email]" value="" type="email" id="footer-contact-form--email" class="input-group-field"
                      placeholder="Email address*" required pattern="email">
              </div>
              <label class="form-error" data-form-error-for="footer-contact-form--email">Valid email required.</label>
        </div>
        <div>
              <textarea name="user[message]" id="footer-contact-form--message" placeholder="Message*" rows="3"
                  required=""></textarea>
              <label class="form-error" data-form-error-for="footer-contact-form--message">A message is required.</label>
        </div>
        <button value="" type="submit" class="button expanded">Send</button>
    </form>
...