フォーム全体の入力等を禁止する


動作ブラウザ 【 IE:4.0  NN:6.0
Internet Explorer Netscape Navigator DreamPassport iCab
3.0x 4.0x 4.5 5.0x 5.5 2.0x 3.0x 4.0x 4.x 6.0 2 3 2.x
Windows × - × × × × - × -
Macintosh × - × × × × - - ×
UNIX - - - - - × × × × - - -
Dreamcast - - - - - - - - - - × × -

ポイント function setForm(fObj,flag) { len = fObj.elements.length; for (i=0; i<len; i++) fObj.elements[i].disabled = flag; }
説  明 フォームのテキストフィールドの入力を無効にするにはdisableプロパティにtrueを指定します。再度入力を許可するにはfalseを指定します。フォーム全体を設定するためにフォーム内に含まれているエレメントの数を求める必要があり、「フォームオブジェクト.elements.length」でエレメント総数を取得できます。これで取得したエレメント数分だけfor命令で繰り返し処理を行い全てのエレメントのdisableプロパティに値を設定します。フォームが複数ある場合には、禁止/許可する場合にフォームオブジェクトへの参照も関数に渡します。関数側では渡されたフォームオブジェクトへの参照を利用します。このようにすると関数側は汎用的なものになり他のページでも使い回しができるようになります。
サンプル <html> <head> <title>フォーム全体の入力等を禁止する(複数ある場合)</title> <script Language="JavaScript"><!-- function setForm(fObj,flag) { len = fObj.elements.length; for (i=0; i<len; i++) fObj.elements[i].disabled = flag; } // --></script> </head> <body> <form name="myFORM"> <input type="text" name="myTEXT"><br> <input type="button" value="ぼたん"><br> <input type="checkbox">チェックボックス<br> <input type="radio">ラジオボタン<br> <textarea>テキストエリア</textarea> </form> <a href="javaScript:setForm(document.myFORM,true)">入力禁止</a><br> <a href="javaScript:setForm(document.myFORM,false)">入力許可</a><br> <hr> <form name="xForm"> <input type="text" name="myTEXT"><br> <input type="button" value="ぼたん"><br> <input type="checkbox">チェックボックス<br> <input type="radio">ラジオボタン<br> <textarea>テキストエリア</textarea> </form> <a href="javaScript:setForm(document.xForm,true)">入力禁止</a><br> <a href="javaScript:setForm(document.xForm,false)">入力許可</a><br> <hr> </body> </html>
補足説明 Macintoshでは"true"、"false"のように文字列を指定しても動作しますが、Windowsではtrue、falseの真偽値を代入しないと動作しません。また、禁止にした場合はデータが送信されません(項目名も送信されません)。

■サンプルスクリプトを実行する >>実行
■各ブラウザでの動作結果を見る >>View!

写真素材 PIXTA