0

我的网站上有一个联系表。我使用 formit 进行 FormIT 验证。我希望电子邮件不超过 40 个字符,必须是正确的电子邮件地址。Message字段也是必需的,并且设置了最大长度。

验证器无法正常工作:

  • 当必填字段为空时,它会显示错误消息并且不允许发送表单(这种情况是绝对正确的)
  • 当 inemail任何文本(有效与否)时,发送表单但重定向到成功页面不起作用(因此当我们输入超过最大长度时也会发生这种情况)

        [[!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>
    
4

1 回答 1

1

您在名称输入和电子邮件输入中有两次类型属性,所以这可能是问题所在。

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

删除type="name"type="email" -- (leave type="text")

另外 - 我只为 Formit 占位符使用了fi前缀;您确定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`
]]
于 2015-08-19T05:15:58.437 回答