2008/12/16

[javascript]checkboxのdisabledを動的に操作

javascriptから動的に、disabledをはずしたり、つけたりする機会があったので。
まずは、チェックボックスが1個場合


<form name="frm" action="" method="post">
<input type="checkbox" name="hoge" value="1" disabled>
<input type="button" value="確認" onclick="lf_kakunin();">
</form>
<script type="text/javascript">
function lf_kakunin(){
var curfrm = document.frm;
if(curfrm.hoge.disabled == true ){
curfrm.hoge.disabled = false;
}else{
curfrm.hoge.disabled = true;
}
}
</script>

disableだった場合は、解除を行い、解除になっている場合は、入力禁止に変更するプログラムで、動作確認をしてみると、確かに動きました。

では、複数の場合は、どうなるでしょうか?

<form name="frm" action="" method="post">
<input type="checkbox" name="hoge" value="1" disabled>
<input type="checkbox" name="hoge" value="2">
<input type="checkbox" name="hoge" value="3" disabled>

<input type="button" value="確認" onclick="lf_kakunin();">
</form>
<script type="text/javascript">
function lf_kakunin(){
var curfrm = document.frm;
for(var i=0;i<curfrm.hoge.length;i++){
if(curfrm.hoge[i].disabled == true ){
curfrm.hoge[i].disabled = false;
}else{
curfrm.hoge[i].disabled = true;
}
}
}
</script>

今度も、disableだった場合は、解除を行い、解除になっている場合は、入力禁止に変更するプログラムなのですが、注意する点として、inputのname属性の次に、[]を追加しないといけないこと。

これを明記することによって、何番目のチェックボックスを操作しますというのを認識してくれます。
また、最初は、0番目なので、あわせて注意したいところです。

例によって、今度は、radioボタンでも検証してみようかなと。

2 件のコメント:

  1. で、あれか。
    一個か複数の場合でまた分岐しないといけない、と。

    ダルー!

    まぁ前はなしたみたいにgetElementsByNameとか
    getElementsByTagNameとか
    一個でも複数でも配列で取得するメソッドで
    取得してくれば問題ないんだろうけどね。

    JavaScriptはたまに便利なんだか便利じゃないんだか分からない時があるなー。

    返信削除
  2. >JavaScriptはたまに便利なんだか便利じゃ>ないんだか分からない時があるなー。

    ↑おもしろい♪

    返信削除