• ベストアンサー

JavaScriptを使った計算フォーム

JavaScriptを使った計算フォームで質問です。 人数をテキストボックスに入力し、そのあと項目を選ぶと計算がされるようにしたいのですが ラジオボタンが持っているvalueを取り出せません。 下記の「←------???」と書いてあるところを何とかすれば完成だと思うのですが、 どなたか教えていただけないでしょうか? <script language="JavaScript" type="text/JavaScript"> function sjLeft(source,length) { if (source.length < length) { return (""); } return source.substr(0, length); } function sjReplace(source,start,length,target) { sjlen = source.length; if ((start > sjlen) || (start < 0)) { return String(""); } return String(sjLeft(source,start ) + target + source.substr(start+length, sjlen)); } function sjInsert( source, start, target) { return sjReplace(source,start,0,target); } function fcheck(obj) { s1_2value = ??? * new Number(document.form1.n1.value); ←------??? document.form1.s1_2.value = String(s1_2value); document.form1.total.value = s1_2value; return true; } </script> <form name="form1" method="POST"> <table width="400" border="1"> <tr> <td>人数</td> <td></td> <td><input type=text name=n1 size=8 onChange="fcheck(this);">人</td> <td></td> </tr> <tr> td><input name="n2" type="radio" value="13000" onChange="fcheck(this);">食事A</td> <td>\13,000</td> <td>×人数</td> <td><input name=s1_2 type=text size=8 readonly>円</td> </tr> <tr> <td colspan="2">&nbsp;</td> <td>総計</td> <td><input type=text readonly name=total size=10>円</td> </tr> </table> </form>

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

  • ベストアンサー
  • ubob
  • ベストアンサー率36% (15/41)
回答No.2

チェックボックスではなくをラジオを使用する意味、 集計を二重にしている意味が分かりませんが、一応 複数のメニューからどれかを選択する意味でラジオを 使用しているとすれば ------------------------------------------- <html><head> <script language="JavaScript" type="text/JavaScript"> function sjLeft(source,length) { if (source.length < length) { return (""); } return source.substr(0, length); } function sjReplace(source,start,length,target) { sjlen = source.length; if ((start > sjlen) || (start < 0)) { return String(""); } return String(sjLeft(source,start ) + target + source.substr(start+length, sjlen)); } function sjInsert( source, start, target) { return sjReplace(source,start,0,target); } function fcheck(obj) { var s1_2value=""; for(var i=0; i<document.form1.n2.length; i++){ if(document.form1.n2[i].checked){ s1_2value = new Number(document.form1.n2[i].value) * new Number(document.form1.n1.value); } // document.form1.s1_2.value = String(s1_2value); } document.form1.total.value = s1_2value; return true; } </script> </head> <body> <form name="form1" method="POST"> <table width="400" border="1"> <tr> <td>人数</td> <!--<td></td> //--> <td><input type=text name="n1" size="8" onChange="fcheck(this);">人</td> <td></td> </tr> <tr> <td><input name="n2" type="radio" value="13000" onClick="fcheck(this);">食事A</td> <td>\13,000</td> <!-- <td>×人数</td> <input name=s1_2 type=text size=8 readonly>円</td> //--> </tr> <tr> <td><input name="n2" type="radio" value="11000" onClick="fcheck(this);">食事B</td> <td>\11,000</td> <!-- <td>×人数</td> <input name=s1_2 type=text size=8 readonly>円</td> //--> </tr> <tr> <!-- <td colspan="2">&nbsp;</td> //--> <td>総計</td> <td><input type=text readonly name=total size=10>円</td> </tr> </table> <input type="reset" value="clear"> </form> </body> </html> ---------------------------------------------- 二重に集計する意義が分からないため、 集計を一箇所にしています

Java-Java
質問者

お礼

ご回答ありがとうございます。 解決できました! ありがとうございました。非常に助かりました。 またよろしくお願いします!

すると、全ての回答が全文表示されます。

その他の回答 (2)

noname#199778
noname#199778
回答No.3

#1です。 前回は、慌てて間違いを書いてしまいました。 すでに#2の方が適切なスクリプトを提示されていますが、 function fcheck(obj){ var s1_2value=""; for (i=0; i<document.form1.n2.length; i++){ if(document.form1.n2[i].checked){ s1_2value = new Number(document.form1.n2[i].value) * eval(document.form1.n1.value);} } document.form1.s1_2.value = String(s1_2value); document.form1.total.value = s1_2value; return true; } このようにする必要がありました。 大変失礼しました。

Java-Java
質問者

お礼

そうですね私も最初単純に「ANo.#1」のように行えばいいと思っていました。 でも、無事に解決することが出来ました。 ありがとうございます。またよろしくお願いします。

すると、全ての回答が全文表示されます。
noname#199778
noname#199778
回答No.1

該当部分を s1_2value = new Number(document.form1.n2.value) * new Number(document.form1.n1.value); とすればよいのではないでしょうか? 元がどのような記述で、どういったエラーが出ているのかがわからないので、適切ではないかもしれませんが… 見当違いでしたら、ごめんなさい。

すると、全ての回答が全文表示されます。

関連するQ&A