Javascriptに関する質問です。

FormのSubmitボタンの「disabled」を、Checkboxの有無で切り替えたいと考えております。
試しにちょこちょこ作ってみたのですが、何か基本的な部分でつまずいているような気がしております。
ご存知の方おられましたら、コメントお願い致します。


<script Language="JavaScript"><!--
function setBT(cOBJ,fName) {
document.fName.disabled = !cOBJ.checked;
}
// --></script>

<form name="test" method="post" action="index.html">
<input type="checkbox" name="agree" value="同意" onClick="setBT(this,'BTN')" />同意
<input type="image" name="BTN" src="btn.gif" alt="OK" disabled>
</form>

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2006/08/09 18:18:52
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:ElekiBrain No.1

回答回数255ベストアンサー獲得回数15

ポイント50pt

http://q.hatena.ne.jp/1155032562(ダミーURL)

たぶんこんな感じだとは思うのですが。nameにせずidにし、getElementByIdにて取得。一応テストはしてみましたが。

<script Language="JavaScript">

<!--

function setBT(cOBJ,fName) {

 document.getElementById(fName).disabled = !cOBJ.checked;

}

// -->

</script>

</head>


<body>

 <form name="test" method="post" action="index.html">

 <input type="checkbox" name="agree" value="同意" onClick="setBT(this,'BTN')" />同意

 <input id="BTN" type="image" src="btn.gif" alt="OK" disabled>

</form>

</body>

id:lg-tsp

ご回答ありがとうございます。

頂いたサンプルで実装できました。

ありがとうございます

2006/08/09 18:16:55
id:KirakiraHikaru No.2

回答回数354ベストアンサー獲得回数68

ポイント10pt

onClick="setBT(this,'BTN')"

で'BTN'の文字列を渡しているので、

そのままだとBTNオブジェクトにはアクセスできません。


JavaScriptを下記のようにすると、

指定された文字列のオブジェクトにアクセスできます。

function setBT(cOBJ,fName) {
document.getElementById(fName).disabled = !cOBJ.checked;
}

http://sonic64.com/2003-08-29.html


また、ほかのボタンから利用する可能性がなければ固定でも良いと思います。

function setBT() {
document.all.BTN.disabled = !document.all.agree.checked;
}
id:shoki0311 No.3

回答回数8ベストアンサー獲得回数0

ポイント20pt

「input type="image"」ではdisabled属性を使用できないようです。(参考:上から10行目あたり

やはり「input type="submit"」を使ってはどうでしょうか?

それと、JavaScriptも少しおかしかったので直してみました。

-------------------------------------------------

<script Language="JavaScript"><!--
function setBT () { // 引数は不要になったので削除
rs=document.test.BTN.disabled; // ボタンが無効状態になっているかを取得
rs=document.test.BTN.disabled;
//  フォーム名↑   ↑要素名
if (rs) document.test.BTN.disabled = false; // 有効なら無効化
else document.test.BTN.disabled = true; // 無効なら有効化
}
// --></script>

<form name="test" method="post" action="index.html">
<input type="checkbox" name="agree" value="同意" onClick="setBT()" />同意
<!--                                                           ↑引数は不要になったため削除 -->
<input type="submit" name="BTN" value="送信" alt="OK" disabled>
<!-- ↑src属性は削除 そしてvalue属性を追加 -->

-------------------------------------------------

これでちゃんと動きます。

id:lg-tsp

このような実装もありなのですね。

勉強になります。

ご回答ありがとうございました。

2006/08/09 18:18:11

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません