堀北真希うさぎ
主な作品
アイドルをモデルにした制作者のオリジナルキャラクタを用いたイラストの一例とそれを組み込んだアニメーション動画

ページ案内

チェックボックスを全部選択/不選択にするスクリプト。

入力フォームを構成するチェックボックスとなっている項目を全部選択或いは選択解除にするスクリプトです。

チェックボックスを全部選択/不選択にするスクリプト・目次。

チェックボックスを全部選択/不選択にするスクリプトの概要。

チェックボックスすなわち複数選択可能な選択肢に於いて、沢山の項目がある場合には全部選択するとなると全部項目を選択しなければならず、ちょっと不便です。

そこで、これらの項目をワンクリックで全部撰べるようにします。

逆に一から撰び直したいと言うときのために、ワンクリックで全部不選択にするようにも出来ます。

チェックボックスを全部選択/不選択にするサンプルスクリプト。

以下のフォームは、JAVAスクリプトを有効にしていれば、列車種別・その他の交通機関の直後に全部選択及び全部取消のボタンが現れます。

そして、

列車種別・その他の交通機関

利用可能な列車種別などを以下から撰んで下さい。

発着地

発着地を漢字で入力して下さい。

出発地
到着地

チェックボックスを全部選択/不選択にするサンプルスクリプトを利用しているHTMLについて。

このサンプルスクリプト「CheckCheckBox.js」を実際に利用しているHTMLは以下のようになります。

サンプルスクリプトを作る上で特に重要な点は、全てのチェックボックスにname="type"属性と言う同じ値のname属性が与えられている事です。

尚、JAVAスクリプトが使えない環境でも、同様の機能を実現するため<noscript>要素で全部選択を指定する出来るチェックボックスを用意しました。

<form action="http://www.marguerite.jp/Nihongo/WWW/Back.cgi" method="post" class="important">
    <fieldset>
        <legend>列車種別・その他の交通機関</legend>
        <p>利用可能な列車種別などを以下から撰んで下さい。</p>
        <script type="text/javascript" src="SetAllChecboxes.js"></script>
        <noscript>
            <dl>
                <dt><label><input type="checkbox" name="type" value="ALL" />全部選択</label></dt>
                <dd><samp>全部選択</samp>を指定した場合、以下の選択に関係なく全選択肢を選択したものとします。</dd>
                </dl>
            </noscript>
        <ul>
            <li><label><input type="checkbox" name="type" value="8" />新幹線</label></li>
            <li><label><input type="checkbox" name="type" value="4" />特別急行</label></li>
    (中略)
            <li><label><input type="checkbox" name="type" value="16" />バス</label></li>
            </ul>
        </fieldset>

    <fieldset>
        <legend>発着地</legend>
        <p>発着地を漢字で入力して下さい。</p>
    (中略)
        </fieldset>
    <ul>
        <li><input type="submit" value="検索" /></li>
        </ul>
    </form>

チェックボックスを全部選択/不選択にするサンプルスクリプトの内容。

一方、サンプルスクリプト「CheckCheckBox.js」自身は以下のようになります。

//    スクリプトを呼び出すHTMLを書き出す。
document.write(
    '<ul>'+
    '<li><input type="button" value="全部選択" onclick="allSelect(); return(false); " onkeypress="if (event.keyCode!=10) return(true); else { allSelect(); return(false); }" /></li>'+
    '<li><input type="button" value="全部取消" onclick="noSelect(); return(false); " onkeypress"if (event.keyCode!=10) return(true); else { noSelect(); return(false); }" /></li>'+
    '</ul>'
    );

//    全てのname="type"属性のinput要素を選択済みにする。
function allSelect() {
    var f=document.forms[0].elements;
    var i=-1;

    while (++i<f.length) {
        if (f[i].name!='type') continue;
        f[i].checked=true;
        }
    }

//    全てのname="type"属性のinput要素を不選択にする。
function noSelect() {
    var f=document.forms[0].elements;
    var i=-1;

    while (++i<f.length) {
        if (f[i].name!='type') continue;
        f[i].checked=false;
        }
    }

チェックボックスを全部選択/不選択にするサンプルスクリプトの実際の構成。

このスクリプトは三部に分かれております。

  1. チェックボックスを全部選択/不選択にする処理を呼び出すボタンをHTML文書に書き出す処理
  2. チェックボックスを全部選択する処理
  3. チェックボックスを全部不選択にする処理

チェックボックスを全部選択/不選択にする処理を呼び出すボタンをHTML文書に書き出す処理。

一番目の

は単純にHTMLをdocument.write()メソッドで書き出すだけです。

書き出しているHTMLは二つの<input type="button">要素で、いずれも

チェックボックスを全部選択する処理。

二番目の

は、函数 allSelect() で実現します。

  1. 零番目の<form>要素となる forms[0] オブジェクトの下位にある<input>要素などのオブジェクトの配列を forms[0].elements で取得して変数 f に代入します(つまり、変数 f は配列となります)。
  2. 変数 f の要素を零番目から f.length-1 で与えられる最大値まで一通り以下の事を行います。
    1. 該当する要素の name属性値(nameで得られる)が type でなければ何もせずに次の要素の処理に移行します。
    2. 該当する要素の name属性値(nameで得られる)が type ならば、checkedプロパティtrue 値を代入して強制的に選択されたものとします。
      • 実は、checkedプロパティは当該要素がチェックボックスかラジオボタンでないと意味がなく、万一そうで無い場合にこのプロパティを扱おうとするとエラーの原因になる恐れもあります。このため、本来ならtypeプロパティの内容を調べて、それが checkbox 値となっている事も調べる必要があります。

チェックボックスを全部不選択にする処理。

三番目の

は実はチェックボックスを全部選択する処理と殆ど変わりません。

ただ二つ違う点は、

だけです。

最後に。

この処理は、フォームのチェックボックスを確認するスクリプトと組み合わせると良いでしょう。

また、JAVAスクリプトが使えない環境のために、<noscript>要素で用意する代替コンテンツには全選択を表すチェックボックスも用意しておいて、CGI側でも当該ボックスが選択されている場合にはクエリの内容に拘らず全選択されたものとして処理するようにすると更に便利になるでしょう。

しらぎくのウェブサイト作成入門サイトマップ



marguerite.site@gmail.com