2013-04-13 29 views
0

我正在使用Express.js中的表單,並且正在使用express-validator進行驗證。我在下面顯示的代碼是一個帶有兩個文本框,一個選擇文件按鈕和一個提交按鈕的「表單」。當用戶提交表單,但也有驗證錯誤,我想:Express.js:使用文本框和按鈕驗證表單

  1. 顯示錯誤信息,稱這在用戶需要填寫表格的元素,我相信我知道如何。用彈出窗口做這件事,但我想知道是否有辦法「突出顯示」用戶需要填寫的文本框,或者在文本框/按鈕旁邊放置一個「* Required」文本。

  2. 當前,如果在提交後出現錯誤,表單中的兩個文本框將填入用戶以前提交的變量。我想爲「選擇文件」按鈕做同樣的事情。按照我在兩個文本框中所做的那樣使用「值」字段對按鈕不起作用。有沒有辦法做到這一點?

//在路徑文件夾

exports.myPage = function(req, res) { 
    res.render('myPage.jade', {valName: 'Enter', valLastName: 'Enter'}); 
}; 

exports.myPage_post_handler = function(req, res) { 

    nameID = req.body.nameID; 
    lastNameID = req.body.lastNameID; 
    my_file = req.body.my_file; 

    req.session.nameID = nameID; 
    req.session.lastNameID = lastNameID; 
    req.session.my_file = my_file; 

    if (typeof req.session.nameID != 'undefined'){ 
     valName = nameID; 
    } 

    if (typeof req.session.lastNameID != 'undefined'){ 
     valLastName = lastNameID; 
    } 


    req.assert('nameID', 'Please enter a name').notEmpty(); 
    req.assert('lastNameID', 'Please enter a last name').notEmpty(); 
    req.assert('my_file', 'Please enter a my_file').notEmpty(); 



    var errors = req.validationErrors(); 

    if(!errors){ 
    res.redirect('/other_page'); 
    } 
    else { 
    res.render('myPage.jade'); 
    } 
}; 

//in my_page.jade 
form(method='post') 
    | Name: 
    div 
    input(type='text', name='nameID', id = 'name', value = valName) 
    | Session ID: 
    div 
    input(type='text', name='laastNameID', id ='lastName', value = valLastName) 
    | Video: 
    div 
    input(type='file', name='my_file', id='fileF') 

    div 
    input(type='submit', value='submit', value='Submit') 

回答

0

在HTML5中(這也適用於玉),你可以把一個「必需」的參數,只要你申報文本框或單選按鈕等。