MODX FormIt 验证仅检查“必需”
MODX FormIt validation checks only `required`
我的网站上有一个联系表。我使用 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>
您在名称输入和电子邮件输入中有两次类型属性,所以这可能是问题所在。
<input type="text" id="name" name="name" type="name">
<input type="text" required="required" type="email">
去掉type="name"和type="email"——(保留type="text")
此外 - 我只使用 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`
]]
我的网站上有一个联系表。我使用 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>
您在名称输入和电子邮件输入中有两次类型属性,所以这可能是问题所在。
<input type="text" id="name" name="name" type="name">
<input type="text" required="required" type="email">
去掉type="name"和type="email"——(保留type="text")
此外 - 我只使用 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`
]]