SmallStyle


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は切ってしまっているので,こんな機能があったところでまったく機能しないわけですが,使えれば使えたで便利なものではあるなぁと思いました.

Tags: Tech

最近の日記