当我尝试将某些内容保存到数据库并且验证失败时,添加邮件(没有刷新页面)的最佳和最简单的方法是什么?
我可以使用flash消息吗?
答案 0 :(得分:0)
由于您的模型中设置的验证是服务器端,因此在您提交表单之前不会收到Flash消息。正如其他人所建议的那样,可能有一种方法可以使用AJAX来执行此操作,但是您可以使用JavaScript来查看表单元素并创建自己的Flash消息以在客户端进行验证。
HTML5引入了新的输入属性,例如required
和pattern
,您还可以使用它们来验证input
元素中的值集。
EG <input type="text" name="firstname" required />
如果有人试图提交表单而不在firstname输入中输入值,则会显示一条错误消息。这里没有辛苦的工作,很好。
pattern属性将任何正则表达式作为其值,因此您可以根据需要具体使用该值。
EG <input type="text" name="firstname" pattern="^[A-Z]{1}[a-z]{1,20}$" />
这样只允许以大写字母开头的1-20个字母单词,如果没有,则会在提交时显示错误消息。 (没有服务器请求)。
我喜欢HTML 5的这一新增功能,是进行客户端验证的好方法。模型中的服务器端验证是最重要的,因为访问者在浏览器中关闭JavaScript或编辑页面源可以避免任何客户端验证。
您也可以使用CSS以不同的方式使用这些新属性设置输入框的样式。
EG input:required:invalid { border: 1px solid red; }