2012-02-15 25 views
4

Express-formは、node.js/express用の非常に強力な検証プラグインです。しかし、例とドキュメントでは、すべての応答がサーバー側(console.log)です。これは開発には十分ですが、ユーザーに何が間違っているかを伝えるのは非常に現実的ではありません。現時点でNode.jsクライアント側の応答を伴うサーバー側フォームの検証

、私は2つの異なるソリューションを想像することができます

  1. は、フォームを送信および/または間違ったフィールドに「error'-クラスを追加するために添付req.bodyと検証メッセージでフォームを再度レンダリングをバックリダイレクト。
  2. AJAXを使用してフォームを送信してください。

「新規」をレンダリングするときにデータベースを再度照会する必要はないので、オプション2を使用することをお勧めします。しかし、検証結果をクライアントに戻し、「エラー」クラスを入力フィールドに追加する方法を考えなければなりません。

アイデア?

答えて

3

ブラウザの最初のインスタンスでjavascriptを使用してユーザー入力を検証し、レンダリングされたフォーム(la rails)でエラーを出力しているサーバーで検証しようとします。今私はカスタムバリデーターのセットを使用していますので、正しい方向にあなたを指すことはできませんexpress-form

自分の正規表現に加えて、validator npmパッケージを使用する場合もありますが、プレーンDOMやフレームワークを使用してvalidator検証をブラウザで使用することもできます。

編集:AJAXの検証で作業

は非常に簡単です(あなたがexpress.bodyParser()ミドルウェアを使用している場合)、あなたはあなたのリクエストでオブジェクトを受け取り、あなたがそれを指し示すことができますいくつかのエラーがある場合、パラメータを検証しますあなたの応答ex。

{ 
"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 
} 

あなたは、ブラウザ側のフレームワークを使用している場合は、プラグインがあるか、私はそれがものを書くことは簡単だと確信しています。

関連する問題