超簡単にフォーム入力&サブミットしたい

地味ーに、バリデーションのコードを書いてきたが、超簡単にフォーム入力&バリデーション(入力検証、入力制限)&サブミットできるとうれしい。

コンセプトは、

フォームに(簡単なルールで)inputタグを書くと、自動的にバリデーションがくっついて、サブミットボタンを押すと(バリデーション後)の入力値が、サーバーに飛んでいく。

という感じ。

JavascriptでDOMとEventを操作して、Ajax(XHR)でサーバーに送る一連の手続きで出来そう。
サーバー側は、いつも通りPHPで書いて(本当はJava屋さんを自認)、MyValidator.class.phpを使えばいい。

期待する入力者の操作は以下。

  1. 表示された初期のフォームにある必須入力項目を、先頭から順に入力をする。
  2. 入力が終わったら、ボタンを押すなりの方法でサーバーにサブミットする。

INPUTタグのタイプとして、バリデーションをかけそうなのは、

type validation
text 多様
password 多様。未入力が代表
checkbox 未入力
radio 未入力

としておこう。

バリデーションの戦略としては、

  1. 個々の入力項目のうち、type=textは「入力フィールドそのものに、『注意書き』をグレーで表示」して、「こうやって入力してね」とガイドする。
  2. 入力後、フォーカスが外れたら、すかさずAjaxを使ってサーバーサイドでバリデートしてしまう(エラーがあれば、すかさずエラー表示する)。
  3. 必須入力項目があるのに、何も入力しないでサブミットしてしまうケースは、サブミット時にエラーにする(必須入力のチェックボックスラジオボタンは、この時にクライアントサイドで検証する)。

とする。
簡単なフォームであれば、こんな感じでOKだろう。

サーバーサイドで行うバリデーションは多様なので、必要に応じてMyValidator.class.phpを拡張するなり、書き直すなりしよう。

あとは、(上のコンセプト通りに)HTMLに適当なルールのキーワードを埋めるだけで、自動的に上のバリデーションからサブミットという処理ができるようにしたい。