0

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="?")

どのように?

ありがとう

4

2 に答える 2

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>
于 2016-12-11T11:07:33.047 に答える