JavaScriptは超初心者です。想像で喋っておりますので、専門用語等の間違いや見当違いな部分は見逃してください。
比較的安価ですが機能の優れたショッピングカートを使用しております。全てをカートCGIで済ませる他、オリジナルで用意したHTMLからFORMで指定されたCGIに送信することでカートに商品が入る方法も使用でき、現在その方法でショッピングサイトを構築中です。
HTMLでFORM送信する場合、商品名や価格など定められた値のほか、自由項目として5つまで自由にフィールドを増やして、その値をカートに送信することができます。今まではその5つの情報で十分間に合っていたのですが、今回追加を検討している商品の送信したい情報が5つを超えてしまい、その商品だけカートを使わないという方法を取るわけにもいかず、困っています。
▽CGI機能範囲内の送信情報
商品名・価格・数量・option1~5
↓
▽でもこうしたい
商品名・価格・数量・option1~5+追加option6・option7
無理やりoption6・option7を送信しても、ショッピングカート上にはやはりVALUEは表示されませんでした。option1~5という名前で設定されたVALUEしか受け取らないようです。
本当に困り果てていたところ、JavaScriptを使用すればいいのでは?というご意見をいただき、質問させていただきました。
まだまだ長くなりますので、回答1に続きを書きます。
No.5ベストアンサー
- 回答日時:
>ラジオボタンを使用
No.4さんのスクリプトを入れるとこんな感じだと思います(スクリプトの部分だけ)
<!--
function func() {
document.F1.opt3.value=getValue( "opt3" ) + "+" + document.F2.opt4.value;
document.F1.submit();
}
function getValue( name ) {
value = "";
e = document.getElementsByName( name );
for( idx=0; idx<e.length; idx++ ) {
if( e[ idx ].checked ) {value += e[ idx ].value;}
}
return( value );
}
// -->
何度もすみません。書いていただいたスクリプトをはめ込み使用してみた所、きちんとVALUE値が送信できるようになりました。また、スクリプトとにらめっこし、ラジオボタン+ラジオボタンの場合や、ダミーフォームを使用せず、一つのフォーム内で済ませるやり方も何とか考え付くことができました。
pipipi523様のご回答がなければ解決することは出来なかったと思います。これでクライアントの要望に応える事が出来ます。本当にありがとうございました。
No.4
- 回答日時:
前段階の質問で回答させていただいた者です。
その質問ではラジオボタンになっていたので、一応その場合のスクリプトを・・
まぁ参考にしてみてください。
function set() {
value = "";
value += getValue( "optionA" );
value += getValue( "optionB" );
document.send.CCC.value = value;
}
function getValue( name ) {
value = "";
e = document.getElementsByName( name );
for( idx=0; idx<e.length; idx++ ) {
if( e[ idx ].checked ) {
value += e[ idx ].value;
}
}
return( value );
}
先日は大変お世話になりました。こちらの質問にもお答えいただき、感激です。
書いていただいたスプリクトですが、pipipi523様のスクリプトと一緒に(合わせて?)使用することで、ラジオボタン使用時のVALUE値否取得の件も解消することができました。
ありがとうございました。本当に助かりました。
No.3
- 回答日時:
こんな感じ?
<html><body>
<script type="text/javascript">
<!--
function func() {
document.F1.opt3.value=document.F2.opt3.value + "+" + document.F2.opt4.value;
document.F1.submit();
}
// -->
</script>
</form>
<form name="F1" action="cart.cgi">
商品1<input type="hidden" name="sina" value="s1"><br>
価格:49,800円(税込)<input type="hidden" name="kakaku" value="4800"><br>
購入数:<input type="text" size="3" maxlength="3" name="CNT" value="1">個<br>
option1<input type="text" size="3" maxlength="3" name="opt1" value="op1"><br>
option2<input type="text" size="3" maxlength="3" name="opt2" value="op2"><br>
<input type="hidden" name="opt3">
</form>
<!--追加オプション用のフォーム-->
<form name="F2" action="#">
option3<input type="text" size="3" maxlength="3" name="opt3" value="op3"><br>
option4<input type="text" size="3" maxlength="3" name="opt4" value="op4"><br>
<input type="button" value="カートへ" onclick="func()">
</body></html>
この回答への補足
ありがとうございます。早速試してみました。
追加オプションが、テキストエリアの場合も、SELECTの場合もきちんと送信できました!
しかし、追加オプション用のフォームに
<input type="radio" name="opt3" value="あ" checked="checked" />
<input type="radio" name="opt3" value="い" />
<input type="radio" name="opt3" value="う" />
<input type="radio" name="opt3" value="え" />
<input type="radio" name="opt3" value="お" />
とラジオボタンを使用すると、opt3のVALUEが『undefined』となってしまいます。原因が分かりますか?お手数をお掛けしますが、お答えいただければ幸いです。
No.2
- 回答日時:
JavaScriptで文字列連結も可能ですが、CGIを変更するのが一番らくだと思いますよ(ライセンス上可能なら、ですけど)。
どうしてもJavaScriptでやる場合は、
<form ... onsubmit="getElementById('option5').value+=','+getDocumentById('option6').value+','+getDocumentById('option7').value;true;">
とかすればいいんですけど(textboxの場合)、結局CGI側で連結したテキストを分割しないといけないんじゃないですか?
回答ありがとうございます。
>CGI変更
その通りなんですよね。それが一番簡単なんですが、配布元にも有償でいいからカスタマイズして下さい!と頼んでみたところ断られてしまったんです。
No.1
- 回答日時:
質問者です。
サブ用のIDで失礼します。続きを書きます。商品オーダーページに、ID=Aのダミーフォームを用意、その中で、商品名・価格・数量・option1~5、追加option6・option7を客に入力・選択させます。
その内容を、同ページのID=Bの送信用本命フォームに受け渡す。ですが、option6・option7の内容は送信できませんので、ID=Bに受け渡す際、option5として3つのVALUEを連結させる。
option5のVALUE=option5とoption6・option7が続きで書かれたVALUE
ID=BのSUBMITボタンを押した時に一連の作業が行われる??VALUEは重複しない。
・・・・という感じですが、いかがでしょうか?JavaScriptは全く分かりませんので、はちゃめちゃな事を言っていたらすみません。出来れば、このスクリプトをコピーしろ!くらい詳細な回答がいただけると助かります。また、連結させたいフィールドが、テキストエリアの場合、チェックボックスの場合、ラジオボタンの場合など、違う記述が必要な場合も書いていただけると非常に助かります。
よろしくお願いします!!!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- Amazon アマゾン 7 2022/06/11 11:03
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- ヤフオク! ヤフオクについて 1 2023/03/22 12:40
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- その他(ネットショッピング・通販・ECサイト) オンライン注文の予約商品に関しての ショップ側の対応に関して意見ください 1 2023/07/26 20:29
- Android(アンドロイド) 128GB LAZOS マイクロSDカード 1280円 もっと良い商品ある? 4 2023/02/07 19:42
- その他(ネットショッピング・通販・ECサイト) 中国から局留めの商品が届かず、問い合わせても返信がありません。 1 2022/09/25 01:21
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ラジオボタンと連動して文字列...
-
VB.NET DateTimeの型について
-
オブジェクト配列
-
セレクトボックスの初期選択状...
-
C言語クイックソートの比較総回...
-
setIntervalの間隔を途中で変更...
-
Jqueryを使って値の合計を簡単...
-
selectboxのoptionタグのvalue...
-
value内に変数を入れたい
-
複数のsubmitボタンで押された...
-
return trueとreturn falseの用...
-
JavaScriptで<select>の<option...
-
複数のselect値で1つも選択され...
-
全てのselect要素をデフォルト...
-
idの振り直しについて
-
html selectの内容を初期値に戻す
-
selectボックスで選択数を制限...
-
jQuery セレクトボックスで選択...
-
フォームのチェックボックスの...
-
ラジオボタンで選択変更
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
value内に変数を入れたい
-
hiddenのvalueの値を変えたい
-
3桁区切りのカンマをつけたい...
-
VB.NET DateTimeの型について
-
複数のsubmitボタンで押された...
-
テキストボックスに入力された...
-
フォーム内容を上から順番にJav...
-
VBAをJavaScriptに変換したいです
-
javascriptでhiddenに二次元配...
-
大量のselect要素のvalueを短い...
-
フォームで入力した値を別のフ...
-
プルダウン選択時、既に入力済...
-
ラジオボタンと連動して文字列...
-
引数に数値、文字列の混在
-
クイズ作成:15個の問題から5個...
-
クリックの度に加算していくには?
-
setIntervalの間隔を途中で変更...
-
Pythonで会員サイトの自動ログ...
-
selectboxのoptionタグのvalue...
-
JavaScriptによる自動計算フォ...
おすすめ情報