ハマっている「お菓子」を教えて!

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

A 回答 (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などのサーバーサイドの技術
をつかわないのであれば、あまりこのような姑息な手段に頼らない
ようにした方がよいでしょう
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/12/10 22:19

リンク先を少し細工すれば可能です。


リンク先にダミーのアンカーをつけて、そのアンカー名をチェックしてます。

サンプル

----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----
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/12/10 22:18

私も、#1さんの意見と同じです。


なので、代わりの方法。

「次のフォーム」を5枚作ってしまう。

これが一番簡単です。それぞれのボタンのリンク先をチェックが入っているフォームにとばします。
質問者が勉強して、CGIで作成できるようになったら、差し替えましょう。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/12/10 22:16

次のページでチェックが入っているのですよね?


かなりむずかしいですよ。
というのが次のページへデータを受け渡しをするのは
通常getやpostという技術を使うのですが、これは
htmlだけでは参照できないからです。

javascriptをつかうというてもありますが、この手の
作業につかうのは多少無理がでてきますが、それでもやりたいですか?
またサーバーサイドの技術をつかってよいならできますが
今の質問レベルですとさらにスキル的にむりがあると思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/12/10 22:15

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


おすすめ情報