前提
都合により、PHPなどは使用できないため
Javascreiptのみで解決したいです。
実現したいこと
複数のチェックボックスの値を取得し、
下記のようにURLパラメータとして連結させ、
送信ボタン(input submit)クリックで
連結させたURLにリンクさせたいです。
「(URL)?1+2+3+4+5+6」
調査したこと・試したこと
▼参考)チェックボックスで選択した値をパラメータとしてURLに表示する
http://note.favorite-color.net/2017/201712271293/
上記の参考サイトの場合、
URL末尾のパラメータは
input内のnameとvalueを連結させています。
例)
「(URL)?hoge=2&fuga=2&fuga=3」
この連結表記を
単純にinput内のIDのみで繋げて
↓のようにしたいですが方法がわかりません。
例)
「(URL)?1+2+3+4+5+6」
また、参考サイトのソースだと、
「&」で連結させていますが、
これを「+」に変更したいのですが
こちらもやり方がわからず、困っています。。
JSは初級レベルです。
色々調べてるのですがうまくいきません。
他に良い方法などありましたら、
どなたかご教示いただけないでしょうか。
よろしくお願いいたします。
該当のソースコード
------------------↓HTML
<form method="get" action="./"> <input type="checkbox" name="hoge" value="1" id="1">hoge1 <input type="checkbox" name="hoge" value="2" id="2">hoge2 <input type="checkbox" name="hoge" value="3" id="3">hoge3 <input type="checkbox" name="hoge" value="4" id="4">hoge4 <input type="checkbox" name="hoge" value="5" id="5">hoge5 <input type="checkbox" name="hoge" value="6" id="6">hoge6 <input type="submit" value="送信" /> </form>------------------↓JS(「name」の部分を「id」に変えてもうまくいきませんでした)
<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>
回答1件
あなたの回答
tips
プレビュー