アプリ版:「スタンプのみでお礼する」機能のリリースについて

ラジオボタンで、選択させて金額は表示できたのですが…
部数が取得できませんでした。
同時に変更できるようにしたいのです

例えば、Atextと、Btextが、あるとします。
ラジオボタンをチェックした瞬間に、チェックしたボタンの部数はAtext
金額は、Btextにそれぞれ表示させたいです。

どなたか、教えていただけませんでしょうか?

現在は金額のみ表示できるようになっております

<html>
<Title></Title>
<head>
<script type="text/javascript">
<!--
function calculate(){

//合計金額を格納する変数の値を初期値0として設定。
totalValue = 0;
X = 0;
F = 0;
theForm = document.myForm;
X = theForm.pay.length;
F = X-1;

//選択されているラジオボタンを調べ、そのラジオボタンのvalueの値を数値化して変数totalValueに追加。
for (i=0;i<X;i++){
if(theForm.pay[i].checked)totalValue += eval(theForm.pay[i].value);

theForm.totalPay.value = Math.round(totalValue*0.00)+totalValue;
if(theForm.pay[F].checked)theForm.totalPay.value = '別途';}
}
-->
</script>
</head>
<body>

<form name="myForm" method="post" action="shop.cgi">


<Div class="hyou">>>価格(税込み)※計算用の仮値段<Br></div>
<Table Border="1" Align="left" CellPadding="3">
<TR><TD>
<Input Type="radio" Name="pay" Value="12000" onClick="calculate()">100部</td>
<td>12,000円</td>
</tr>
<tr>
<td><INPUT type="radio" name="pay" value="14000" onClick="calculate()">150部</td>
<td>14,000円</td>
</tr>
<tr>
<td><INPUT type="radio" name="pay" value="15000" onClick="calculate()">200部</td>
<td>15,000円</td>
</tr>
<tr>
<td><INPUT type="radio" name="pay" value="16000" onClick="calculate()">300部</td>
<td>16,000円</td>
</tr>
<tr>
<td><INPUT type="radio" name="pay" value="0" onClick="calculate()">300部以上</td>
<td>※お見積もりいたします</td>
</tr>
<tr>
<td><B>選んだ部数</B><Br><font size="2">(実際は非表示)</font></td>
<td><INPUT name="busuu" type="text" size="24" value="" readonly> 部</td>
</tr>
<tr>
<td><B>商品価格</B><Br><font size="2">(実際は非表示)</font></td>
<td><INPUT name="totalPay" type="text" size="24" value="" readonly> 円</td>
</tr>
</table>

</FORM>

</body>
</html>

A 回答 (2件)

>そうすると、CGIに対比表を追加しなければならないのですよね


>現在動いてるCGIの記述をあまり変えたくないので、二つの
>フィールドに表示したいのです。

(1)CGIに対比表を追加するのは当たり前のことです。
たとえばユーザーがデータを改ざんしてbusuu=100、totalPay=10
などでおくってきたら、10円で仕事をなさるつもりですか?
よくよく考えて運用しないと痛い目をみるのは質問者さん自身です。

(2)前回提示したデータでbusuuとtotalPayの2つが送られるように
してありますが、ちゃんと検証なさっていますか?
    • good
    • 0
この回答へのお礼

>よくよく考えて運用しないと痛い目をみるのは質問者さん自身です。

そうですよね。
もうちょっと考えます。ありがとうございました

>ちゃんと検証なさっていますか?
CGIの方も同時に弄らないと受け取れないようです。

お礼日時:2008/10/09 11:40

考え方が違いますね



radioのvalueには数量をいれておいて、対比表で金額にかえます。
ただし、サーバーに金額を送る意味はありません。
サーバー側で数量をもとに再度対比表で金額を計算しなおす必要が
あります。
(ユーザーによる改竄の可能性があるため)
ちなみにbusuuのデータはradioがもっているのであえて
別のフィールドを用意する必要なないでしょう。
(submitするとわかるでしょ?)


<html>
<head>
<Title></Title>
<script type="text/javascript">
function calculate(obj){
var f=obj.form;
var list={100:"12000",150:"14000",200:"15000",300:"16000"};
var v=list[obj.value]?list[obj.value]:"";
f.totalPay.value=v;
}
</script>
</head>
<body>
<form>
<Div class="hyou">>>価格(税込み)※計算用の仮値段<Br></div>
<Table Border="1" Align="left" CellPadding="3">
<TR><TD>
<Input Type="radio" name="busuu" Value="100" onClick="calculate(this)">100部</td>
<td>12,000円</td>
</tr>
<tr>
<td><INPUT type="radio" name="busuu" value="150" onClick="calculate(this)">150部</td>
<td>14,000円</td>
</tr>
<tr>
<td><INPUT type="radio" name="busuu" value="200" onClick="calculate(this)">200部</td>
<td>15,000円</td>
</tr>
<tr>
<td><INPUT type="radio" name="busuu" value="300" onClick="calculate(this)">300部</td>
<td>16,000円</td>
</tr>
<tr>
<td><INPUT type="radio" name="busuu" value="300up" onClick="calculate(this)">300部以上</td>
<td>※お見積もりいたします</td>
</tr>
<tr>
<td><B>商品価格</B><Br><font size="2">(実際は非表示)</font></td>
<td><INPUT name="totalPay" type="text" size="24" value="" readonly> 円</td>
</tr>
</table>
<input type="submit">
</FORM>

</body>
</html>

この回答への補足

そうすると、CGIに対比表を追加しなければならないのですよね
現在動いてるCGIの記述をあまり変えたくないので、二つのフィールドに表示したいのです。

補足日時:2008/10/09 10:55
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!