プロが教えるわが家の防犯対策術!

下のようなフォームがあります。

<form method="get" action="" >
 <input type="checkbox" name="item" value="1">item1</input>
 <input type="checkbox" name="item" value="2">item2</input>
 <input type="checkbox" name="item" value="3">item3</input>
 <input type="submit" value="送信" />
</form>

これで例えばすべてのチェックボックスをチェックして送信した場合、
?item=1&item=2&item=3
となりますが、これを
?item=1,2,3
とする方法はありますでしょうか?

都合により、method="get"の部分は変えられず、受け取ってからの処理(value値を配列にして受け取ってから展開するなど)も変更できません。

ご教授いただけると助かります。

A 回答 (1件)

PHPでやるなら一度別ファイルで受けて、headerなどで飛ばすしかないでしょう。


javascriptでよいならこんな感じでできます。
渡すデータに日本語が含まれる場合は処理がめんどうなので省きます。

<script>
try{
document.addEventListener ('submit',function(e){func(e)},true);
}catch(e){
document.attachEvent('onsubmit',function(e){func(e)});
}
function func(e){
var t = (e.srcElement || e.target);
if(t.nodeName=="FORM"){
var args=new Object();
for(var i=0;i<t.length;i++){
if(t[i].name && t[i].checked){
if(!args[t[i].name]){
args[t[i].name]=t[i].name+"="+t[i].value;
}else{
args[t[i].name]+=","+t[i].value;
}
}
}
}
var url="";
for(var i in args){
url+=(url==""?"":"&")+args[i];
}
url=t.action+(url==""?"":"?"+url);
location.href=url;
e.preventDefault();
}
</script>

<form method="get" action="exsample.php">
<input type="checkbox" name="hoge" value="1">hoge1
<input type="checkbox" name="hoge" value="2">hoge2
<input type="checkbox" name="hoge" value="3">hoge3
<input type="checkbox" name="fuga" value="1">fuga1
<input type="checkbox" name="fuga" value="2">fuga2
<input type="checkbox" name="fuga" value="3">fuga3
<input type="submit" value="送信" />
</form>
    • good
    • 0
この回答へのお礼

御礼が遅くなり申し訳ございませんでした。
御回答を参考にさせていただき希望どおりの動作が実現できました。
どうもありがとうございました。

お礼日時:2010/01/02 11:50

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