Проверка формы MODX только проверяет "требуется"

У меня есть контактная форма на моем сайте. Я использую formit для его проверки FormIT. Я хочу, чтобы адрес электронной почты не превышал 40 символов, был необходим и был правильным адресом электронной почты. Message Поле также обязательно для заполнения и имеет максимальную длину.

Валидатор не работает правильно:

  • Когда обязательные поля пусты, отображается сообщение об ошибке и не разрешается отправлять форму (эта ситуация абсолютно корректна)
  • Когда в email любой текст (действительный или нет), форма отправляется, но перенаправление на страницу успеха не работает (поэтому это происходит также, когда мы вводим больше максимальной длины)

        [[!FormIt?
        &hooks=`spam,email,redirect,FormItAutoResponder`
        &emailTpl=`emailTplContact`
        &emailSubject=`Message from site.com`
        &emailTo=`myemail@gmail.com`
        &validate=`email:email:required:maxLength=^40^,
                   message:required:maxLength=^150^`
        &redirectTo=`11`
        &fiarTpl=`emailAutoRespond`
        &fiarSubject=`Your message is sent`
        &fiarFromName=`My Site`
        &fiarFrom=`myemail@gmail.com`
        &fiarToField=`email`
        &fiarReplyTo=`email`
        ]]
    
        <form id="contact-form" method="post" action="[[~[[*id]]]]" enctype="application/x-www-form-urlencoded" role="form" data-toggle="validator" name="order">
          <input type="text" id="name" name="name" type="name" placeholder="Name" value="[[!+fx.name]]" size=25>
          <input type="text" required="required" type="email" id="email" name="email" placeholder="Email" value="[[!+fx.email]]">
          [[!+fx.error.email]]
          <textarea required="required" placeholder="Message" id="message" name="message">[[!+fx.message]]</textarea>
          <button name="send">Send</button>
        </form>
      </div>
    

1 ответ

Решение

У вас есть атрибут type дважды во вводе имени и вводе электронной почты, так что это может быть проблемой.

<input type="text" id="name" name="name" type="name">
<input type="text" required="required" type="email">

Удалить type="name" и type="email" - (оставить type="text")

Кроме того - я когда-либо использовал префикс fi только для заполнителей Formit; ты точно знаешь, что fx будет работать? Вы установили это где-то еще? Вы говорите, что видите сообщение об ошибке, поэтому я предполагаю, что заполнитель ошибки должен работать...

Обязательно добавлю placeholderPrefix на ваш вызов FormIt:

[[!FormIt?
    &placeholderPrefix=`fx`
    &hooks=`spam,email,redirect,FormItAutoResponder`
    &emailTpl=`emailTplContact`
    &emailSubject=`Message from site.com`
    &emailTo=`myemail@gmail.com`
    &validate=`email:email:required:maxLength=^40^,
           message:required:maxLength=^150^`
    &redirectTo=`11`
    &fiarTpl=`emailAutoRespond`
    &fiarSubject=`Your message is sent`
    &fiarFromName=`My Site`
    &fiarFrom=`myemail@gmail.com`
    &fiarToField=`email`
    &fiarReplyTo=`email`
]]
Другие вопросы по тегам