最速怪談選手権

ホームページで、メールフォームの一部にドロップダウンリストを使用しています。通常はユーザーの方にリストから一つ選んでもらっているのですが、特定のリンク元からメールフォームのページに飛んだときにのみ、あらかじめ指定のリストを選択状態にしておきたいと考えています。
つまり、デフォルトのドロップダウンリストを表示させる場合と、それとは異なるリストを表示させる場合とを使い分けたいのですが・・・可能でしょうか。
HTMLか、JavaScriptか、CGIか・・・いろいろ調べてみたのですが、分かりませんでした。
どなたか、教えてください!!

A 回答 (3件)

こんな感じでしょうか?


//以下の行は、「//-->」の部分を除いてコメント行なので削除しても構いません。
あと、タブを消してありますので、ソースが見やすくなるように適当に追加してください。
-----[ソース(前後省略)]-----
<script language="javascript">
<!--
//どのページから辿っても同じ表記になる部分
document.write('<select name="aaa">');
document.write('<option value="-">デフォルト</option>');

//特定のページから辿ると、デフォルト選択しておきたい選択肢
if (document.referrer.indexOf("/test.html")>0){
document.write('<option value="0" selected="selected">選択肢0</option>');
}else{document.write('<option value="0">選択肢0</option>');}

//どのページから辿っても同じ表記になる部分
document.write('<option value="1">選択肢1</option>');
document.write('</select>');
// -->
</script>
<noscript>
<select name="aaa">
<option value="-">デフォルト</option>
<option value="0">選択肢0</option>
<option value="1">選択肢1</option>
</select><br>
javascriptがオフになっています。
</noscript>
-----[ソースここまで]-----
javascriptをオフにしていたり、リファラをセキュリティソフト等で切っていると正しく機能しないと思いますが…。
(その場合、選択肢は表示されますが、思ったとおりの効果にはならないでしょう。javascriptをオフにしていると、<noscript>~</noscript>で囲った部分が、リファラを切っていると、直接指定したときと同じ様になります)
この例では「test.html」から辿ってきたときに「選択肢0」を、それ以外の場合には一番上の「デフォルト」を選択するようにしてあります。

以上、参考までに。
あまりソースが綺麗じゃないですね…。申し訳ありません。
    • good
    • 0
この回答へのお礼

回答ありがとうございました!
書いていただいたソースを参考に、ページを修正してみました。
・・・が、うまくいきません・・・。
何かやり方が間違っているのでしょうね・・・。
とりあえず、もう少しがんばってみます。

ソース、感謝です!ありがとうございました!

お礼日時:2007/03/26 23:17

2つページを作ればHTMLだけでも初期表示状態を2つに分けることが出来ます。



一般のページ
<a href="form1.html">フォームへ</a>

form1.html
<select>
<option selected>選択肢1</option>
<option>選択肢2</option>
</select>

特定のページ
<a href="form2.html">フォームへ</a>

form2.html
<select>
<option>選択肢1</option>
<option selected>選択肢2</option>
</select>

ページが2つになるということを避けるために、また、JavaScriptを止めている環境でも表示出来るように、一般的にはCGIを使うと思いますが、
JavaScriptでもSSIでもできます。
    • good
    • 0
この回答へのお礼

回答ありがとうございました!
リストの数が多いので、リスト項目ごとにページを増やすのはやはり避けたいところです。
とりあえず、JavaScriptで試してみます。余裕があればCGIのほうが良さそうですが・・・。
勉強してみます。
ありがとうございました!

お礼日時:2007/03/26 23:25

>特定のリンク元からメールフォームのページに飛んだとき



元のページというのは通常リファラーとよばれています。
リファラーを判定するのはたいていPHPやCGIなどの
サーバー側で動いているプログラムです。

また、元ページを参照するのではなく元ページで特定の
パラメータをつけてメールフォームにとばし、そのパラメータの
値をみて、前のページを類推するという手法もあるでしょう。
(もちろん悪意のあるユーザーにパラメータを偽造されるリスクはありますが)

その場合は、getやpostなどでパラメータをわたすか、クッキーや
セッションなどの技術を使うのが一般的です。
これもサーバーサイドのプログラムで処理するのが主流ですが
無理をすればブラウザの機能のみで実現することも可能です。
(ブラウザの処理は確実性に乏しいのでおすすめできませんが)
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
勉強になりました。
CGIで処理するのがよさそうですね。
特に、パラメータをつけて・・・という方法がいいんじゃないかと思いました。
今のところ、CGIより簡単なJavaScriptで試していますが、CGIのほうも勉強してみます。
ありがとうございました!

お礼日時:2007/03/26 23:22

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