• ベストアンサー

特定のボタンを押すとリンク先でチェックされる

あるページにボタンが5個あって、どれかをクリックして次のフォームページへリンクするとフォーム画面で特定のラジオボタンにチェックが入っている。(対応するものがセレクトされている) という仕様にしたいのですが、どうしたらよいのでしょうか? 初歩的な質問ですみませんがお願いします。

質問者が選んだベストアンサー

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

#3さんの方法はなるべく使わない方がよいでしょう。 リンクをいじるのは本来とは使用方法がことなり危険です。 そのようにするくらいならきちんとjavascriptでも パラメータを渡す方法を例示しておきます。 //test.htm <html> <body> <form action="check.htm" method="get"> <input type="submit" value="1" name="data"> <input type="submit" value="2" name="data"> <input type="submit" value="3" name="data"> <input type="submit" value="4" name="data"> <input type="submit" value="5" name="data"> </form> </body> </html> //check.htm <html> <head> <script language="javascript"> window.onload=function(){ var f=document.forms["form1"]; var str = document.location.href; var pos=str.search("\\?"); if(pos==-1) return var str2=str.substring(pos+1,str.length) var arr=str2.split("&"); for(var i=0;i<arr.length;i++){ arr2=arr[i].split("="); if(arr2[0]=="data"){ for(var j=0;j<f.length;j++){ if(f[j].name=="radio1" && f[j].value==arr2[1]){ f[j].checked=true; } } } } } </script> </head> <body > <form name="form1"> <input type="radio" name="radio1" value="1">1 <input type="radio" name="radio1" value="2">2 <input type="radio" name="radio1" value="3">3 <input type="radio" name="radio1" value="4">4 <input type="radio" name="radio1" value="5">5 </form> </body> </html> めんどうなわりにあまり適切な方法ではありません。 #1でも書きましたが、CGIやPHPなどのサーバーサイドの技術 をつかわないのであれば、あまりこのような姑息な手段に頼らない ようにした方がよいでしょう

crea-n
質問者

お礼

JavaScriptだけでやろうとするとこんなに記述しなければならないのですね。 自分のやりたいこととスキルに開きがあることを感じました。 2度もご回答くださって有難うございます。 もっと勉強します!

その他の回答 (3)

  • venzou
  • ベストアンサー率71% (311/435)
回答No.3

リンク先を少し細工すれば可能です。 リンク先にダミーのアンカーをつけて、そのアンカー名をチェックしてます。 サンプル ----test.html---- <html><body> <a href="check.html#1">1</a> <a href="check.html#2">2</a> <a href="check.html#3">3</a> </body></html> ----test.html---- ----check.html---- <html><head> <script language="javascript"><!-- function ck(){ str = document.location.href; if(str.substr(str.length-1,1) == '1') document.form1.ck1.checked = true; if(str.substr(str.length-1,1) == '2') document.form1.ck2.checked = true; if(str.substr(str.length-1,1) == '3') document.form1.ck3.checked = true; } //--></script> </head> <body onload="ck()"> <a name="1"></a><a name="2"></a><a name="3"></a> <form name="form1"> <input name="ck1" type="checkbox">1 <input name="ck2" type="checkbox">2 <input name="ck3" type="checkbox">3 </form> </body></html> ----check.html----

crea-n
質問者

お礼

ソースまで記述してくださって有難うございます! ラジオボタンなんで同じNAMEだと作動しませんでした。 せっかく教えてくださったのに・・・。 有難うございました。

  • edomin
  • ベストアンサー率32% (327/1003)
回答No.2

私も、#1さんの意見と同じです。 なので、代わりの方法。 「次のフォーム」を5枚作ってしまう。 これが一番簡単です。それぞれのボタンのリンク先をチェックが入っているフォームにとばします。 質問者が勉強して、CGIで作成できるようになったら、差し替えましょう。

crea-n
質問者

お礼

それが一番早いと思ったのですが、メンテナンスが大変で。 ご回答有難うございました!

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

次のページでチェックが入っているのですよね? かなりむずかしいですよ。 というのが次のページへデータを受け渡しをするのは 通常getやpostという技術を使うのですが、これは htmlだけでは参照できないからです。 javascriptをつかうというてもありますが、この手の 作業につかうのは多少無理がでてきますが、それでもやりたいですか? またサーバーサイドの技術をつかってよいならできますが 今の質問レベルですとさらにスキル的にむりがあると思います。

crea-n
質問者

お礼

ご丁寧に有難うございます。 CGIとかでないとつらいんですね・・・。

関連するQ&A