
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
switchを使って四則演算のプロ...
-
ボタン無しでフォーム内容送信
-
javaScriptの変数をJavaの変数...
-
onchangeイベントを強制的に発...
-
return trueとreturn falseの用...
-
<input>の選択肢をプルダウンメ...
-
Formのシリアライズができない
-
RegularExpressionValidatorの...
-
Javascriptに条件分布ついて(再)
-
C#(csファイル)とjavascriptと...
-
name = cats[1] という input ...
-
複数のformから値を取得する方法
-
データベースの値を判断してラ...
-
テキストボックスにカーソルを...
-
テーブル内のチェックボックス...
-
複数のチェックボックス項目が...
-
idの振り直しについて
-
画面表示とともに、テーブルの...
-
OnClickでURL生成し、飛ばしたい
-
時間表示のタグ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
value内に変数を入れたい
-
hiddenのvalueの値を変えたい
-
UART通信の取説で,left floati...
-
sessionStorageを調べています。
-
javascriptでhiddenに二次元配...
-
eval()を使わずに数値を取得し...
-
Kintone(キントーン)でドロップ...
-
3桁区切りのカンマをつけたい...
-
selectboxのoptionタグのvalue...
-
自動的に連番生成したURLにリン...
-
子から親へチェックボックスの...
-
どのボタンがクリックされたの...
-
フォームで個数の選択をプルダ...
-
name属性が同じフォームが複数...
-
VB.NET DateTimeの型について
-
JAVASCRIPTの日数計算について
-
プルダウン選択時、既に入力済...
-
Javascriptのグローバル変数に...
-
セレクトボックスの初期選択状...
-
JAVASCRIPTで、ボタンを押した...
おすすめ情報