「教えて!ピックアップ」リリース!

下記のような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>


例)
・「いいい」を選択
  ↓
・「ううう」を選択
  ↓
・「ううう」を選択することはできません、とアラートを出す。
  ↓
・「いいい」の選択に戻る

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

ご回答ありがとうございます。

こちらがいちばんシンプルなやり方のようですね。
こちらの方法を採用させていただきます。

実は、↓のような例で、偽を返すと、アクションを起こさないのと同様に、
<a href="test.html" onclick="alert(1); return false;">test</a>
簡単にできないかと思ってたのですが、皆さんの回答をみる限りでは
出来ないようですね。

ありがとうございました。

お礼日時:2008/11/01 23:45

ちと待ってくれ。


質問者は
>たとえば「ううう」を選択すると
と言っている。この”たとえば”とは
一度選択したら、変更されても元に戻して変更できないようにする!
と解釈するのでは?

まぁ~無言を続けている限り真実はわからないが・・・
    • good
    • 2

こんにちは!


スマートな書き方ではないかもしれませんが、以下のような方法はいかが
でしょうか?

<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イベント時に現在選択されている値を取得し、保存しておく
選択されたくない項目が選択された時、警告メッセージを表示し、元の値に変更
選択されても良い値が選択された時、選択された値を取得し、保存しておく

参考になれば幸いです!
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

ANo.2さんの回答と同様に、やはり、一度変数にバックアップしておく
方法ですね。onfocusを使うという発想は思い浮かびませんでした。

今回は、ANo.2さんのやり方でいきますが、参考になりました。
ありがとうございました。

※JavaScriptって発想が大事なんですね~。なるほど。

お礼日時:2008/11/01 23:51

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

ご回答ありがとうございます。

質問が不明確であったようで、失礼しました。

たとえば「ううう」を選択すると
 ↓
「ううう」を選択すると

「たとえば」という言葉は要らなかったですね。。

とはいえ、ご回答いただき、ありがとうございました。

お礼日時:2008/11/01 23:47

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

先ほど送信したのですが、うまくいっていなかったようなので、もう一度。ダブったらごめんなさい。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

hiddenに保持しておくのですね。

ありがとうございました。

お礼日時:2008/11/01 23:40

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング