- ベストアンサー
プルダウン選択を変更すると、変更する前に戻るJavaScript
下記のようなJSで、たとえば「ううう」を選択すると、 「ううう」を選択する前に戻すには、どうすればいいでしょうか? <script> function test(value) { if (value == "u") { alert("「ううう」を選択することはできません"); //ここ↓をどう書けばいいですか? } } </script> <select name="test" id="test" onchange="test(this.value);"> <option value="a">あああ</option> <option value="i">いいい</option> <option value="u">ううう</option> <option value="e">えええ</option> <option value="o">おおお</option> </select> 例) ・「いいい」を選択 ↓ ・「ううう」を選択 ↓ ・「ううう」を選択することはできません、とアラートを出す。 ↓ ・「いいい」の選択に戻る
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは こんなやり方は、如何でしょう? <HTML> <BODY> <script> var predata = "a"; function test(value) { if (value == "u") { alert("「ううう」を選択することはできません"); //ここ↓をどう書けばいいですか? testsel.value = predata; return; } predata = value; } </script> <select name="test" id="testsel" onchange="test(testsel.value);"> <option value="a">あああ</option> <option value="i">いいい</option> <option value="u">ううう</option> <option value="e">えええ</option> <option value="o">おおお</option> </select> </BODY> </HTML>
その他の回答 (4)
ちと待ってくれ。 質問者は >たとえば「ううう」を選択すると と言っている。この”たとえば”とは 一度選択したら、変更されても元に戻して変更できないようにする! と解釈するのでは? まぁ~無言を続けている限り真実はわからないが・・・
- t_netbug
- ベストアンサー率34% (15/44)
こんにちは! スマートな書き方ではないかもしれませんが、以下のような方法はいかが でしょうか? <script> log_val = ""; function test(value) { if (value == "u") { alert("「ううう」を選択することはできません"); document.getElementById('test').value = log_val; }else{ log_val = value; } } function log(value){ log_val = value; } </script> <select name="test" id="test" onchange="test(this.value);" onfocus="log(this.value);"> <option value="a">あああ</option> <option value="i">いいい</option> <option value="u">ううう</option> <option value="e">えええ</option> <option value="o">おおお</option> </select> 流れonfocusイベント時に現在選択されている値を取得し、保存しておく 選択されたくない項目が選択された時、警告メッセージを表示し、元の値に変更 選択されても良い値が選択された時、選択された値を取得し、保存しておく 参考になれば幸いです!
お礼
ご回答ありがとうございます。 ANo.2さんの回答と同様に、やはり、一度変数にバックアップしておく 方法ですね。onfocusを使うという発想は思い浮かびませんでした。 今回は、ANo.2さんのやり方でいきますが、参考になりました。 ありがとうございました。 ※JavaScriptって発想が大事なんですね~。なるほど。
<html> <select name="test" id="test" onchange="this.disabled=true;"> <option value="a">あああ</option> <option value="i">いいい</option> <option value="u">ううう</option> <option value="e">えええ</option> <option value="o">おおお</option> </select>
お礼
ご回答ありがとうございます。 質問が不明確であったようで、失礼しました。 たとえば「ううう」を選択すると ↓ 「ううう」を選択すると 「たとえば」という言葉は要らなかったですね。。 とはいえ、ご回答いただき、ありがとうございました。
- asapinya
- ベストアンサー率36% (40/109)
<script type="text/javascript"><!-- function tests(value) { if (value == "u") { alert("「ううう」を選択することはできません"); form.test.value=form.hako.value; }else{ form.hako.value=form.test.value; } } --> </script> <form name="form"> <input type="hidden" id="hako" value="a"> </input> <select name="test" id="test" onchange="tests(this.value);"> <option value="a" selected>あああ</option> <option value="i">いいい</option> <option value="u">ううう</option> <option value="e">えええ</option> <option value="o">おおお</option> </select> 先ほど送信したのですが、うまくいっていなかったようなので、もう一度。ダブったらごめんなさい。
お礼
ご回答ありがとうございます。 hiddenに保持しておくのですね。 ありがとうございました。
お礼
ご回答ありがとうございます。 こちらがいちばんシンプルなやり方のようですね。 こちらの方法を採用させていただきます。 実は、↓のような例で、偽を返すと、アクションを起こさないのと同様に、 <a href="test.html" onclick="alert(1); return false;">test</a> 簡単にできないかと思ってたのですが、皆さんの回答をみる限りでは 出来ないようですね。 ありがとうございました。