« 時差ぼけと休みぼけと咳 | メイン | iPod classicを手に入れた »

CGI.pmでdisabledが効かなくなった?

久しぶりにゲームのスクリプトの続きを作っていたら、変なところで引っかかった。
ラジオボタンである箇所を選択不可能に設定していたはずなのに、それが効いていないのだ。

XHTMLで書くと

<label><input type="radio" name="new_class" value="1" disabled="disabled" tabindex="1" />1</label>
<label><input type="radio" name="new_class" value="2" tabindex="2" />2</label>

この1番のようになってほしいわけです。

CGI.pmが3.10のサーバで動かしてみるとちゃんと認識する、ということは確認したのだが、手元の3.33ではdisabledが認識されない。

調べていくと、どうも仕様が変わったらしい。
…というよりも、-disabledオプションが正式に採用されたと言うべきなのか。

CGI.pmは、HTMLの拡張に対応するために、属性値は勝手に作成できる仕様になっている。
で、3.10当時は以下のように書いて実装していた。

        $cgi->radio_group(
            -name    => "new_class",
            -value   => 1,
            -labels  => {1 => 1},
            -default => "none",
            -disabled => "disabled",
        ),
        $cgi->radio_group(
            -name    => "new_class",
            -value   => 2,
            -labels  => {2 => 2},
            -default => "none",
        ),

ラジオボタンの考え方からするとおかしな使い方だったが。


で、今後はdisabledにする項目を指定するようになったようだ。

        $cgi->radio_group(-name=>'group_name',
                            -values    => ['eenie','meenie','minie','moe'],
                            -default   => ['moe'],
                            -linebreak => 'true',
                            -disabled  => ['moe'],
        ),

このサンプルコードは3.33のチェックボックス用のコードをラジオボタン用にアレンジしたもの。

使い方がわかれば難しいことでもないのだが、勝手に追加できるからといって先走るのもほどほどにしないといけないのかもなぁ。

カテゴリ:

トラックバック

このエントリーのトラックバックURL:

同一カテゴリの最新記事

最近のエントリー

Amazon.co.jp

Creative Commons License
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.
Powered by
Movable Type 3.36
Amazon.co.jp