電子書籍の厳選無料作品が豊富!

javascript 初心者です。
HP上で問い合わせページを作っています。

質問の内容によって入力項目を表示/非表示させるために以下のようなスクリプトを書きました。
q-1 を選んだ時は”名前”と”質問内容”を入力,q-2 を選んだ時は”名前”,”入力1”,”質問内容”を入力するという形式です。
質問内容の選択はプルダウンメニューから行います。
IE8以外では動くのですが、IE8だけ動きません。
どうすればよいかを教えて下さい。

<head>

<script type="text/javascript"><!--
function checkmenu( disp ) {
var a = disp ;
document.getElementById('basic-info').style.display = "block";
document.getElementById('question').style.display = "block";
switch(a){
case "select_q-1" :
document.getElementById('disp_q-2').style.display = "none";
break;
case "select_q-2" :
document.getElementById('disp_q-2').style.display = "block";
break;
}
}
-->
</script>
</head>
<body>
<略>
<select name="naiyou">
<option onclick="checkmenu('select_q-1')" value ="q-1">質問1<br>
<option onclick="checkradio('select_q-2')" value ="q-2">質問2<br>
<div id="basic-info" style="display:none">
<table class="aaa">
<tr>
<td class="aaa" width="30%" valign="top"><b>お名前:</b></td>
<td class="bbb" width="70%"><input type="text" name="name" size=30 maxlength=50 value=""></td>
</tr>
</table>
</div>

<div id="disp_q-2" style="display:none">
<table class="aaa" >
<tr>
<td class="bbb" width="30%" valign="top"><b>入力1:</b></td>
<td class="td_toumei" width="70%"><input type="text" name="nyuuryoku1" size=30 maxlength=50 value=""></td>
</tr>
</table>
</div>

<div id="question" style="display:none">
<table class="aaa">
<tr>
<td class="aaa" colspan="2"><b>質問内容: </b></td>
</tr>
<tr>
<td class="bbb" valign="top" colspan="2">
<textarea name="question" cols="60"rows="10"></textarea>
</td>
</tr>
<tr>
<td class="bbb" colspan="2">
<input type="hidden" name="language" value="j">
<input type="submit" value="送信">
<input type="button" name="del" value="本文 クリア" onclick="msgclear()">
</td>
</tr>
</table>
</div>

</body>

実際の質問の項目や入力内容はもう少し複雑ですが、おおまかにはこんな感じです。
プルダウンメニューで選択しても、IE8だけまったく動きません。
よろしくお願いします。

A 回答 (2件)

No1です。



>初めに一番上のメニューを選択すると動いてくれません。
意味がいまいちちゃんと把握できないのだけれど、デフォルト表示のままという解釈をしました。

onchangeはその名の通り、内容が変更されたときに発生します。

デフォルト表示の時に動作しないという意味であるなら、そのような場合は、
1)初期の表示をデフォルト状態に合せておく
 (スクリプトを実行して合せるか、CSSなどで合せておくかなど)
2)セレクトのデフォルト表示を「---」などのどちらでもないものにしておく
 (場合によっては選択されたら、↑のオプションを消す)
のような対処をすればよいのではないでしょうか?

でも、それっていままでも同じだったのでは?
(changeにする前も、わざわざマウス操作しなければ何も起こらなかったはず)
    • good
    • 0
この回答へのお礼

>>初めに一番上のメニューを選択すると動いてくれません。
>意味がいまいちちゃんと把握できないのだけれど、デフォルト表示のままという解釈をしました。

その通りです。説明不足ですみません。

教えて頂いた方法で、どちらもできました。
いろいろな方法があるんですね。勉強不足ですね。
教えて頂いたことを、今後に活かそうと思います。
ありがとうございました。

お礼日時:2010/04/19 17:03

<select>の閉じタグがないので、ブラウザによって表示のされ方が違います。



セレクタの場合はonclickではなく、onchangeでイベントを取得するのが普通では?
(IEではクリックだとイベントが発生しないみたい)

この回答への補足

ありがとうございます。
<select>の閉じタグは下記忘れで、実際には書いてありました。

おかげさまでonchangeを使ったら、IEでも動くようになりました。
ですが、初めに一番上のメニュー(ここでは”質問1”)を選択すると動いてくれません。ほかのメニュー(ここでは”質問2”)を選んだ後、”質問1”を選ぶときちんと動きます。
どうしてこのようなことになるのかが、わかれば教えて下さい。

<select name="naiyou" onchange="checkmenu( this.value )">
<option value ="q-1">質問1</option>
<option value ="q-2">質問2</option>
</select>

よろしくお願いします。

補足日時:2010/04/19 13:58
    • good
    • 0

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