2012-02-15 173 views
4

Express-form是一个非常强大的node.js/express验证插件。但是,在示例和文档中,所有的响应都是服务器端(console.log),这对于开发来说已经足够了,但不太实际的是告诉用户出了什么问题。Node.js客户端响应的服务器端表单验证

此刻,我能想象两种不同的解决方案:

  1. 提交表单和重定向回/附带添加“错误的领域error'类req.body和验证消息再次呈现形式。
  2. 使用AJAX提交表单。

我更喜欢选项2,因为我不想在渲染'新'时再次查询数据库。但我必须了解如何将验证结果传递回客户端,并将“错误”类添加到输入字段。

任何想法?

回答

3

我尝试在浏览器中通过javascript验证用户输入的第一个实例,然后验证输出呈现形式(la rails)的服务器输出错误。现在我正在使用我的自定义验证器集合,因此我无法用express-form将您指向正确的方向。

随着我的自定义正则表达式我有时使用validator npm包,您还可以在浏览器中使用plain DOM或某种框架使用validator验证。

编辑

与AJAX验证工作是很容易的,您会收到一个对象在你的要求(如果您使用express.bodyParser()中间件),验证参数,如果有一些错误,你可以在它指向你的回应

{ 
"errors": { 
    "foo": "must be a number" 
    } 
} 

和:

for (i in answer.errors) { 
    var target = document.getElementById(i); 
    target.class = "error"; 
    // here you can also handle the error description 
} 

如果您使用的浏览器端的框架,有插件或我敢肯定,这是简单的写一个。