2004-07-14
_ JavaScriptでフォームのクリア
Strutsで開発してる際に,入力チェックなどで元の画面に遷移した場合,フォームのvalueに値が入った状態で表示される.通常入力された値に関してはフォームのリセットボタンでクリアが可能ですが,valueに値が書かれてしまっている場合は,それをクリアすることができません.仕方がないので,この部分に関してはJavaScriptでクリアするように実装することにしました.
…が,Strutsでは<html:form>タグを使ってformのJSP上に定義をしているためにname属性を指定すると,JSPコンパイルエラーで表示ができない.というわけで,formname.fieldname.value=''といった感じではフォームの値をクリアできないことが判明.明示的に名前を指定してフォームを特定する以外に方法はないかとGoogleで検索してみると,他にもやり方があるらしい.
document.forms[0].elements[0].value
これが今回の問題を解決する上で非常に重要になってくるキーワード.それぞれが何を意味しているのかというと,
- document
- 現在表示されているページ
- forms[0]
- 現在のページで最初に現れるフォーム
- elements[0]
- フォーム内で一番目のエレメント
- value
- そのエレメントの値
という意味です.
ページ内のすべてのフォームは,現れる順番に0から始まるインデックス番号が付いてforms[]配列に入っています.最初のフォームが forms[0],2番目のフォームが forms[1],3番目のフォームが forms[2]…(以下続く)となります.エレメントについても同様です.このことから現在のページの何番目のフォームの何番目のエレメントの値をいじりたい場合,今回の要件だと値を空にしたい場合は
document.forms[0].elements[0].value="";
とJavaScriptのコード内に記述すればいいということになります.普段,自分がネットを使う場合はJavaScriptは切ってしまっているので,こんな機能があったところでまったく機能しないわけですが,使えれば使えたで便利なものではあるなぁと思いました.