• ベストアンサー

プルダウン選択を変更すると、変更する前に戻る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> 例) ・「いいい」を選択   ↓ ・「ううう」を選択   ↓ ・「ううう」を選択することはできません、とアラートを出す。   ↓ ・「いいい」の選択に戻る

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

  • ベストアンサー
  • garaogu
  • ベストアンサー率40% (67/166)
回答No.2

こんばんは こんなやり方は、如何でしょう? <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>

sweepea
質問者

お礼

ご回答ありがとうございます。 こちらがいちばんシンプルなやり方のようですね。 こちらの方法を採用させていただきます。 実は、↓のような例で、偽を返すと、アクションを起こさないのと同様に、 <a href="test.html" onclick="alert(1); return false;">test</a> 簡単にできないかと思ってたのですが、皆さんの回答をみる限りでは 出来ないようですね。 ありがとうございました。

その他の回答 (4)

noname#84373
noname#84373
回答No.5

ちと待ってくれ。 質問者は >たとえば「ううう」を選択すると と言っている。この”たとえば”とは 一度選択したら、変更されても元に戻して変更できないようにする! と解釈するのでは? まぁ~無言を続けている限り真実はわからないが・・・

  • t_netbug
  • ベストアンサー率34% (15/44)
回答No.4

こんにちは! スマートな書き方ではないかもしれませんが、以下のような方法はいかが でしょうか? <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イベント時に現在選択されている値を取得し、保存しておく 選択されたくない項目が選択された時、警告メッセージを表示し、元の値に変更 選択されても良い値が選択された時、選択された値を取得し、保存しておく 参考になれば幸いです!

sweepea
質問者

お礼

ご回答ありがとうございます。 ANo.2さんの回答と同様に、やはり、一度変数にバックアップしておく 方法ですね。onfocusを使うという発想は思い浮かびませんでした。 今回は、ANo.2さんのやり方でいきますが、参考になりました。 ありがとうございました。 ※JavaScriptって発想が大事なんですね~。なるほど。

noname#84373
noname#84373
回答No.3

<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>

sweepea
質問者

お礼

ご回答ありがとうございます。 質問が不明確であったようで、失礼しました。 たとえば「ううう」を選択すると  ↓ 「ううう」を選択すると 「たとえば」という言葉は要らなかったですね。。 とはいえ、ご回答いただき、ありがとうございました。

  • asapinya
  • ベストアンサー率36% (40/109)
回答No.1

<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> 先ほど送信したのですが、うまくいっていなかったようなので、もう一度。ダブったらごめんなさい。

sweepea
質問者

お礼

ご回答ありがとうございます。 hiddenに保持しておくのですね。 ありがとうございました。

関連するQ&A