• 締切済み

チェックボックスのCGI渡しの質問

<INPUT type="checkbox" name="key7" value="1">1 <INPUT type="checkbox" name="key7" value="2">2 <INPUT type="checkbox" name="key7" value="3">3 すべてチェック入れて送信した際に xxx.cgi?key7=123ではなくxxx.cgi?key7=1 2 3(xxx.cgi?key7=1%202%203) みたいに半角スペースが間に入った状態で送る方法などあるのでしょうか?かなり初心者なのでわかりづらいと思いますが、知恵を貸してください。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.6

>checkboxとtextとリストボックスの併用も可能 可能です。 しかし単純に1とか2とか、abcレベルの英数字なら問題 ないですがサーバーにデータを送る際に英数字以外の 文字たとえば日本語や記号はエスケープ(変換)する 必要があります。 あまりよくばりすぎるといっぱいいっぱいになりますが どうしてもというのであれば、具体的にどういうように したいか書いてみてもらえれば回答できるかもしれません。

yuuyuu-k
質問者

お礼

そうですね。 うまく説明できませんかもしれませんが <INPUT type="checkbox" name="key" value="1">1 <INPUT type="checkbox" name="key" value="2">2 <INPUT type="checkbox" name="key" value="3">3 の部分を <input type="text" name="key" size="20"> に変えたり <INPUT name="many2" type="text" size="13"> <SELECT name="type2"> <option value="1" selected>以上 <option value="2">以下 などを使ったりです。 CGI自体がkey・many2の項目をこれで受けるとデーターを出してくれるようですので すいません。ここの部部が解決するととても使いやすくなるもので CGIとjavascriptが作れればこんなに困らないんですが そこの部分がまったくできない状態ですので・・

すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.5

CGIでデータを受け取るのに「?」ではなく、いきなり 「&」をもってくることはあまりないと思いますが・・・ どうしてもというのなら url+=(valall=="")?"":"?"+valall; の行を url+=(valall=="")?"":"&"+valall; に変えてみてください。

yuuyuu-k
質問者

お礼

ありがとうございました。 CGIも問題なく動いてやっと先に進めそうです。 javascriptを覚えればこういうこともできるのですね。 質問攻めで申し訳ありませんが、checkboxとtextとリストボックスの併用も可能なのでしょうか?

すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

こんな感じですか? <script language=javascript> function submitFunc(f){ var url=f.action; var val=new Object(); var valall=""; for (var i=0;i<f.length;i++){ var n=f[i].name; if(f[i].type=="checkbox" && f[i].checked==true){ if(typeof val[n] == "undefined") val[n]=""; val[n]+=((val[n]=="")?"":"%20")+f[i].value; } } for (var j in val){ valall+=(valall==""?"":"&")+j+"="+val[j]; } url+=(valall=="")?"":"?"+valall; //alert(url); location.href=url; } </script> <form action="xxx.cgi" method="get" onSubmit="return false;"> KEY1: <INPUT type="checkbox" name="key" value="1">1 <INPUT type="checkbox" name="key" value="2">2 <INPUT type="checkbox" name="key" value="3">3 <hr> KEY2: <INPUT type="checkbox" name="key2" value="1">1 <INPUT type="checkbox" name="key2" value="2">2 <INPUT type="checkbox" name="key2" value="3">3 <hr> KEY3: <INPUT type="checkbox" name="key3" value="1">1 <INPUT type="checkbox" name="key3" value="2">2 <INPUT type="checkbox" name="key3" value="3">3 <hr> KEY4: <INPUT type="checkbox" name="key4" value="1">1 <INPUT type="checkbox" name="key4" value="2">2 <INPUT type="checkbox" name="key4" value="3">3 <hr> ・・・・ <hr> KEY13: <INPUT type="checkbox" name="key13" value="1">1 <INPUT type="checkbox" name="key13" value="2">2 <INPUT type="checkbox" name="key13" value="3">3 <hr> <input type="button" value="実行" onClick="submitFunc(this.form)"> </form>

yuuyuu-k
質問者

お礼

すばやい回答ありがとうございます。 早速利用させていただきましたが 先頭の部分が?で出力してるようです。 できれば&で先頭部分をだしたいのですが・・ javascriptでできるのならぜひ覚えたいのですが なにから学んでいいのか・・ ものすごくyambejp様には感謝しております。

すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

javascriptであればこんな感じがよいでしょう またどうしてもsubmitでやりたいという場合は 複雑ですが、不可能ではないと思います <script language=javascript> function submitFunc(f){ var v=""; var url=f.action; for (var i=0;i<f.length;i++){ if(f[i].name=="key7" && f[i].checked==true) v+=((v=="")?"":"%20")+f[i].value; } url+=(v=="")?"":"?key7="+v; location.href=url; return false; } </script> <form action="xxx.cgi" method="get" onSubmit="return false;"> <INPUT type="checkbox" name="key7" value="1">1 <INPUT type="checkbox" name="key7" value="2">2 <INPUT type="checkbox" name="key7" value="3">3 <input type="button" value="実行" onClick="submitFunc(this.form)"> </form>

yuuyuu-k
質問者

お礼

回答ありがとうございます。 早速利用させていただきました。 javascriptってこういうこともできるんですね。 初心者ですので思いもつきませんでした。 とてもあつかましいようですが、 同じようなname部分が(key)の部分が13個あり(key,key2,key3・・・15keyまで)あるのですが、javascriptで出すことも可能でしょうか? それと一番頭の部分、xxx.cgi?key7=1 2 3だと?の部分を&に変えることもできますでしょうか? ものすごく面倒なご質問ですがお願いいたします。 javascriptの部分扱ってみたのですが、自分ではかなり無理そうなので よろしくお願いいたします。

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

xxx.cgiで受け取ったkey7の値に半角スペースを入れてあげれば解決しそうですが・・・。 もしくは ・value値に半角スペースを入れる。ではダメ? <INPUT type="checkbox" name="key7" value=" 1">1 <INPUT type="checkbox" name="key7" value=" 2">2 <INPUT type="checkbox" name="key7" value=" 3">3                        ↑nameは違うnameにした方がよいのでは!?

yuuyuu-k
質問者

お礼

ご回答ありがとうございます。 私も最初はそれでできると思っていたのですが xxx.cgi?key7= 1 2 3になりCGIがうまく稼動してくれません。

すると、全ての回答が全文表示されます。
  • pipipi523
  • ベストアンサー率40% (148/365)
回答No.1

どうして半角スペースを間に入れた状態で送りたいのか解らないのですが… nameの所を別々の名前にするとかではダメなのでしょうか?

yuuyuu-k
質問者

お礼

ご回答ありがとうございます。 初心者なので、CGIを組み替えられず どうしてもスペースを入れないといけないみたいです。

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

関連するQ&A