我正在使用Node.js,Express和Jade,我正在试图找出如何发布,验证和放大流程表格数据.
div#contact-area form(method='post',action='') label(for='name') Name: input(type='text',name='name',id='name') label(for='email') Email: input(type='text',name='email',id='email') input(type='submit',name='submit',value='Submit').submit-button
然后我使用模块’express-validator’来验证表格如下:
var express = require('express'),routes = require('./routes'),http = require('http'),path = require('path'),expressValidator = require('express-validator') ; var app = express.createServer(); app.configure(function(){ app.set('views',__dirname + '/views'); app.set('view engine','jade'); //not needed if we provide explicit file extension on template references e.g. res.render('index.jade'); app.use(express.bodyParser()); app.use(expressValidator); app.use(express.methodoverride()); app.use(app.router); }); //display the page for the first time app.get('/mypage',function(req,res){ res.render('mypage',{ title: 'My Page' }); }); //handle form submission app.post('/mypage',res){ req.assert('name','Please enter a name').notEmpty(); req.assert('email','Please enter a valid email').len(6,64).isEmail(); var errors = req.validationErrors(); if( !errors){ sendEmail(function(){ res.render('mypage',{ title: 'My Page',success: true }); }); } else { res.render('mypage',{ title: 'My Page',errors: errors }); } });
因此,我的页面有三种渲染方式,每种方案都可以访问不同的局部变量:
>第一次加载页面时(errors = undefined,success = undefined)
>提交表单时出现错误(errors = array,success = undefined)
>提交表单时没有错误(errors = undefined,success = true)
所以我的主要问题是:
>加载我的Jade页面时,当我尝试访问不存在的变量时,似乎会抛出错误.例如,我想看看是否设置了变量’success’,如果是,我想隐藏表单并显示“thanks”消息.有没有一种简单的方法来处理Jade中的变量,它将是未定义的还是值?
>当表单已提交并且存在验证错误时,我想显示错误消息(这不是问题),但也使用先前提交的变量填充表单(例如,如果用户提供了名称但没有电子邮件,错误应该引用空白电子邮件,但表单应保留其名称).此时显示错误消息但我的表单已重置.有没有一种简单的方法可以将字段的输入值设置为后期数据中的值?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。