【问题标题】:express-validator retain input valuesexpress-validator 保留输入值
【发布时间】:2013-06-21 04:44:51
【问题描述】:

我是新手,没有 NodeJS、ExpressJS 和 Jade。我正在使用express-validator 来验证表单。

在路线中:

req.assert('firstName', 'Name is required').notEmpty();
req.assert('lastName', 'Name is required').notEmpty();
req.assert('email', 'A valid email is required').isEmail();

var errors = req.validationErrors();
....
if (errors){
    res.render('users/new', {
      errors: errors
  });
} 
....

Jade,显示错误:

- if (errors)
div.alert.alert-error
    ul  
    - each error in errors
    li= error.msg

以上代码有效。我希望输入值保留在表单中,以便用户不要再次输入。

input#name(type="text", name="name", value="?")

怎么做?

谢谢

【问题讨论】:

    标签: node.js validation express


    【解决方案1】:

    您可以简单地将值放回渲染视图并将其插入到输入标签中。

    if (errors) {
      res.render('users/new', {
        errors: errors,
        firstName: firstName,
        ...
      });
    }
    

    并在玉模板中放

    input#name(type="text", name="firstName", value="#{firstName}")
    

    input#name(type="text", name="firstName", value= firstName)
    

    这取决于你的个人风格。

    最好定义像person.firstperson.lastperson.email 这样的值,因为您只能将person 放入渲染视图中。

    【讨论】:

      【解决方案2】:

      您的users/new.js 文件

      var body = req.body;
      var form = {
          name: body.name,
          surname: body.surname,
          ...
      };
      
      req.checkBody('name', 'Name is required').notEmpty();
      req.checkBody('surname', 'Surname is required').notEmpty();
      
      var errors = req.validationErrors();
      
      if (errors) {
          //Pass both errors and form objects as local variables
          res.render('users/new', { errors: errors, form: form });
      } else {
          ....//write to DataBase
      }    
      

      new.handlebars 文件

      {{#if errors}}
          {{#each errors}}
              <div class="alert alert-danger">{{msg}}</div>
          {{/each}}
      {{/if}}
      <form class="" method="post" action="/users/new">
           <p>Name*</p>
           <input type="text" value="{{form.name}}" name="name" />
      
           <p>Surname *</p>
           <input type="text" value="{{form.surname}}"name="surname" />
      </form>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-03
        • 2021-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-20
        • 2010-12-20
        相关资源
        最近更新 更多