• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:数によってボタンを有効化したい)

数によってボタンを有効化したい

このQ&Aのポイント
  • アメ玉の販売をするために、A、B、Cという3種類の個数が合計数Dと同じになるようにしたいです。
  • ボタンを押すためにはA、B、Cの値の和が100以下である必要があります。
  • イベントハンドラは2つ続けて書くことはできません。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>イベントハンドラは2つ続けて書けないのでしょうか。。。 onChangeを2つ書くというのはあまり美しくないですね。 動かないとは断言できませんが、たぶん動かないのでは? いずれにしろやらないほうがよいでしょう。 ご希望の用件はセミコロンでつなげばよいです。 onChange="funcA();funcB()" ただし、funcA()内でvar宣言した変数はローカル変数になるので funcBで参照できません。 この場合は、onChangeではcheck()のみ呼び出し、その中で調整する方が 効率的ですね。 (グローバル変数が大好きならそちらで管理する手はありますが、 おすすめはできません) その他微調整をするとこんな感じです。 <head> <style type="text/css"> .num{ text-align:right; } </style> <SCRIPT TYPE="text/javascript"> <!-- function check(obj){ var f=obj.form; var valA=f.A.value==''?0:parseInt(f.A.value); var valB=f.B.value==''?0:parseInt(f.B.value); var valC=f.C.value==''?0:parseInt(f.C.value); var valD=parseInt(f.D.value); if (valA+valB+valC > valD){ alert('A,B,Cの和は'+valD+'以下に設定ください') if(obj.type=="select-one") obj.selectedIndex=0; else if(obj.type=="text") obj.value=0; obj.focus(); return false; } f.submitbutton.disabled = (valD != valA+valB+valC); } //--> </SCRIPT> </head> <body bgcolor=#ffffff> <form name="" method="post" action="shop.cgi"> <b>☆飴玉 </b> <br> <b>個数配分</b><br> A:<select name="A" onChange="check(this)"> <option value = '' selected>選択してください</option> <script language="javascript"> for ( var i = 0; i < 51; i++ ){ var sDat = ( "00" + i ).match( /..$/ ); document.write( "<option value = '" + sDat + ")'>" + sDat + "</option>\n" ); } </script> </select><br> B:<select name="B" onChange="check(this)"> <option value = '' selected>選択してください</option> <script language="javascript"> for ( var i = 0; i < 51; i++ ){ var sDat = ( "00" + i ).match( /..$/ ); document.write( "<option value = '" + sDat + ")'>" + sDat + "</option>\n" ); } </script> </select><br> C:<select name="C" onChange="check(this)"> <option value = '' selected>選択してください</option> <script language="javascript"> for ( var i = 0; i < 51; i++ ){ var sDat = ( "00" + i ).match( /..$/ ); document.write( "<option value = '" + sDat + ")'>" + sDat + "</option>\n" ); } </script> </select><br> D:<input type="text" name="D" readonly value="50" class="num"></br> <input type="submit" value="申し込む" name="submitbutton" disabled> </form> </body>

josephat
質問者

お礼

yambejp 様 >有難うございます! イベントハンドラが2つの場合はまた違った書き方になるのですね。。。 全く勉強不足です(><; ご回答大変有難く思います。凄い知識をおもちですね。 また、何かの機会があれば、宜しくお願いします!m(__)m

関連するQ&A