超簡単にフォーム入力&サブミットしたい
地味ーに、バリデーションのコードを書いてきたが、超簡単にフォーム入力&バリデーション(入力検証、入力制限)&サブミットできるとうれしい。
コンセプトは、
フォームに(簡単なルールで)inputタグを書くと、自動的にバリデーションがくっついて、サブミットボタンを押すと(バリデーション後)の入力値が、サーバーに飛んでいく。
という感じ。
JavascriptでDOMとEventを操作して、Ajax(XHR)でサーバーに送る一連の手続きで出来そう。
サーバー側は、いつも通りPHPで書いて(本当はJava屋さんを自認)、MyValidator.class.phpを使えばいい。
期待する入力者の操作は以下。
- 表示された初期のフォームにある必須入力項目を、先頭から順に入力をする。
- 入力が終わったら、ボタンを押すなりの方法でサーバーにサブミットする。
INPUTタグのタイプとして、バリデーションをかけそうなのは、
type | validation | |
text | 多様 | |
password | 多様。未入力が代表 | |
checkbox | 未入力 | |
radio | 未入力 |
としておこう。
バリデーションの戦略としては、
- 個々の入力項目のうち、type=textは「入力フィールドそのものに、『注意書き』をグレーで表示」して、「こうやって入力してね」とガイドする。
- 入力後、フォーカスが外れたら、すかさずAjaxを使ってサーバーサイドでバリデートしてしまう(エラーがあれば、すかさずエラー表示する)。
- 必須入力項目があるのに、何も入力しないでサブミットしてしまうケースは、サブミット時にエラーにする(必須入力のチェックボックスとラジオボタンは、この時にクライアントサイドで検証する)。
とする。
簡単なフォームであれば、こんな感じでOKだろう。
サーバーサイドで行うバリデーションは多様なので、必要に応じてMyValidator.class.phpを拡張するなり、書き直すなりしよう。
あとは、(上のコンセプト通りに)HTMLに適当なルールのキーワードを埋めるだけで、自動的に上のバリデーションからサブミットという処理ができるようにしたい。