【问题标题】:MODX FormIt validation checks only `required`MODX FormIt 验证仅检查“必需”
【发布时间】:2015-11-11 14:54:36
【问题描述】:

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

验证器无法正常工作:

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

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

【问题讨论】:

  • 看来您已经正确设置了所有内容。我会尝试将其剥离,看看它是否真的在验证电子邮件字段的长度:[[!FormIt? &validate=email:maxLength=^40^ 我知道你应该能够将多个验证器链接在一起,但它可能与 email:email:required:maxLength 有问题

标签: forms validation modx modx-revolution formit


【解决方案1】:

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

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

删除 type="name"type="email" -- (leave 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`
]]

【讨论】:

  • fx 前缀只要在 FormIt 调用中设置就可以工作 - 这似乎不在上面的代码中。 &amp;placeholderPrefix 允许您指定自己的前缀。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多