- ベストアンサー
javascriptでの完全一致による表記
- javascriptを使用して、往路と復路を区別して価格を表示したい。
- 支払方法に応じた割引額を計算したい。
- 選択された出発地、到着地、種別、枚数に応じて価格を計算し、合計金額を表示するスクリプトを作成したい。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じでしょうか。 <script type="text/javascript"><!-- var ryoukinhyo={ "東京":{ "名古屋":{ "自由席":{"価格":100} } }, "名古屋":{ "東京":{ "自由席":{"価格":100} } } } var waribikihyo={ "銀行振込":100, "代金引換":0 } function check(f){ var shuppatu=f.shuppatu.value; var touchaku=f.touchaku.value; var shubetu =f.shubetu.value; var paytype =f.paytype.value; var maisu =parseInt(f.maisu.value); var maisu2 =parseInt(f.maisu2.value); var tanka =f.tanka; var tanka2 =f.tanka2; var waribiki = f.waribiki; var goukei =f.goukei; var p2 = 0; if(!shuppatu || !touchaku || !shubetu || !paytype || !maisu) return false; var p=(!ryoukinhyo[shuppatu] || !ryoukinhyo[shuppatu][touchaku] || !ryoukinhyo[shuppatu][touchaku][shubetu])?false:ryoukinhyo[shuppatu][touchaku][shubetu]["価格"]*maisu; if(p) { tanka.value=p.toString(); if(f.shuppatu2.value && f.touchaku2.value && f.shubetu2.value && maisu2){ p2=(!ryoukinhyo[f.shuppatu2.value] || !ryoukinhyo[f.shuppatu2.value ][f.touchaku2.value] || !ryoukinhyo[f.shuppatu2.value][f.touchaku2.value][f.shubetu2.value])?false:ryoukinhyo[f.shuppatu2.value][f.touchaku2.value][f.shubetu2.value]["価格"]*maisu2; if(p2){tanka2.value=p2.toString();} } if(waribikihyo[paytype]){ waribiki.value=waribikihyo[paytype].toString(); }else{ waribiki.value="割引はありません"; } goukei.value=(p + p2 - waribikihyo[paytype]).toString(); }else{ tanka.value="0"; waribiki.value="割引はありません"; goukei.value="【この区間は、販売しておりません】"; } } --></script> <form> 往路:<select name="shuppatu" onchange="check(this.form)"> <option value="">出発選択</option> <option value="東京">東京</option> <option value="名古屋">名古屋</option> </select> <select name="touchaku" onchange="check(this.form)"> <option value="">到着選択</option> <option value="名古屋">名古屋</option> <option value="東京">東京</option> </select> <select name="shubetu" onchange="check(this.form)"> <option value="">種別選択</option> <option value="自由席">自由席</option> </select> <select name="maisu" onchange="check(this.form)"> <option value="1">1</option> <option value="2">2</option> </select><br> 復路:<select name="shuppatu2" onchange="check(this.form)"> <option value="">出発選択</option> <option value="東京">東京</option> <option value="名古屋">名古屋</option> </select> <select name="touchaku2" onchange="check(this.form)"> <option value="">到着選択</option> <option value="名古屋">名古屋</option> <option value="東京">東京</option> </select> <select name="shubetu2" onchange="check(this.form)"> <option value="">種別選択</option> <option value="自由席">自由席</option> </select> <select name="maisu2" onchange="check(this.form)"> <option value="1">1</option> <option value="2">2</option> </select><br> <select name="paytype" onchange="check(this.form)"> <option value="">支払選択</option> <option value="銀行振込">銀行振込</option> <option value="代金引換">代金引換</option> </select> <div>往路合計:<input type="text" name="tanka" value="0" /> + 復路合計:<input type="text" name="tanka2" value="0" /> - 割引:<input type="text" name="waribiki" value="0" /> = 合計:<input type="text" name="goukei" /></div> </form>
お礼
mikemike7 様 またまた、素晴らしいコード、本当に有難うございます! 私が求めていたコード以上に凄いと思いましたのが、往路の選択は必須にしようと思っておりました。 その為、復路のみ入力しても計算が行われない・・・スゴイです! 本当に有難うございました。