2012-02-15 171 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 
} 

如果您使用的瀏覽器端的框架,有插件或我敢肯定,這是簡單的寫一個。