![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
このようなフォーム(aspでセレクトボックスの数は可変になります。)にてSubmit時に
同じ値が選ばれていたらalertを出すJavaScriptを作りたいのですが、
どのようなものを作ればよろしいでしょうか?
<FORM name="TestForm" action="" method="POST" target="">
<TABLE border="1" cellspacing="0" cellpadding="0" width="100%">
<TR>
<td>1位</td>
<TD>
<select name="Select1">
<OPTION value="449">[選択なし]</OPTION>
<OPTION value="465">あ</OPTION>
<OPTION value="466">い</OPTION>
<OPTION value="467">う</OPTION>
</select>
<td>2位</td>
<TD >
<select name="Select1">
<OPTION value="449">[選択なし]</OPTION>
<OPTION value="465">あ</OPTION>
<OPTION value="466">い</OPTION>
<OPTION value="467">う</OPTION>
</select>
<td>3位</td>
<TD>
<select name="Select1">
<OPTION value="449">[選択なし]</OPTION>
<OPTION value="465">あ</OPTION>
<OPTION value="466">い</OPTION>
<OPTION value="467">う</OPTION>
</select>
</TR>
</TABLE>
<TR><TD>
<INPUT type="submit" value=登録 name=B1 onClick="">
</TD></TR>
</FORM>
No.1ベストアンサー
- 回答日時:
formはonSubmitでfalseを受け取るとデータを送信しません。
それさえ理解すればそんなに難しく考える必要はない
と思います。
selectの数は可変的とのことですので、オブジェクトの
タイプを見てチェックするようにしました。
もっと簡単な方法があるかもしれませんが、
フローとしては以下のような形になると思います。
お試しください。
余談ですがselectはユニークな名前にした方がよいでしょうね。
勝手に別名にしてあります。あしからず。
<script language=javascript>
function check(){
var f=document.forms["TestForm"];
var a=new Array();
for (var i=0;i<f.length;i++){
if (f.elements[i].type=="select-one"){
var thisValue=f.elements[i].options[f.elements[i].selectedIndex].value;
if(thisValue=="449"){alert((a.length +1)+"番目が未選択");return false;}
for(var j=0;j< a.length ;j++){
if(thisValue==a[j]){alert((j+1)+"番目と"+(a.length+1)+"番目が同じ値");return false;}
}
a[a.length]=thisValue;
}
}
return true;
}
</script>
<FORM name="TestForm" action="check.htm" method="POST" target="" onSubmit="return check()">
<TABLE border="1" cellspacing="0" cellpadding="0" width="100%">
<TR>
<td>1位</td>
<TD>
<select name="Select1">
<OPTION value="449">[選択なし]</OPTION>
<OPTION value="465">あ</OPTION>
<OPTION value="466">い</OPTION>
<OPTION value="467">う</OPTION>
</select>
<td>2位</td>
<TD >
<select name="Select2">
<OPTION value="449">[選択なし]</OPTION>
<OPTION value="465">あ</OPTION>
<OPTION value="466">い</OPTION>
<OPTION value="467">う</OPTION>
</select>
<td>3位</td>
<TD>
<select name="Select3">
<OPTION value="449">[選択なし]</OPTION>
<OPTION value="465">あ</OPTION>
<OPTION value="466">い</OPTION>
<OPTION value="467">う</OPTION>
</select>
</TR>
</TABLE>
<TR><TD>
<INPUT type="submit" value=登録 name=B1>
</TD></TR>
</FORM>
No.3
- 回答日時:
submit時でなく、選択時にチェックする方で考えてみました。
<select name="Select1">
<select name="Select2" onchange="if(this.options[this.selectedIndex].value==this.form.Select1.options[this.form.Select1.selectedIndex].value){alert('既に選択されています');this.options[0].selected=true;}">
<select name="Select3" onchange="if(this.options[this.selectedIndex].value==this.form.Select1.options[this.form.Select1.selectedIndex].value || this.options[this.selectedIndex].value==this.form.Select2.options[this.form.Select2.selectedIndex].value){alert('既に選択されています');this.options[0].selected=true;}">
No.2
- 回答日時:
以下のとおり
出来れば、「onclick」より「onsubmit」のイベントの方が適していると思います
<script language=javascript>
function test(){
var i
var j
var c
c = TestForm.Select1.length;
for (i = 0; i <= c - 1; i++){
for (j = 0; j <= c - 1; j++){
if(TestForm.Select1(i).value == TestForm.Select1(j).value){
alert("だめ");
return false;
}
}
}
}
</script>
<!--<FORM name="TestForm" action="" method="POST" target="">-->
<FORM name="TestForm" action="" method="POST" target="" onClick="return test();">
<TABLE border="1" cellspacing="0" cellpadding="0" width="100%">
<TR>
<td>1位</td>
<TD>
<select name="Select1">
<OPTION value="449">[選択なし]</OPTION>
<OPTION value="465">あ</OPTION>
<OPTION value="466">い</OPTION>
<OPTION value="467">う</OPTION>
</select>
<td>2位</td>
<TD >
<select name="Select1">
<OPTION value="449">[選択なし]</OPTION>
<OPTION value="465">あ</OPTION>
<OPTION value="466">い</OPTION>
<OPTION value="467">う</OPTION>
</select>
<td>3位</td>
<TD>
<select name="Select1">
<OPTION value="449">[選択なし]</OPTION>
<OPTION value="465">あ</OPTION>
<OPTION value="466">い</OPTION>
<OPTION value="467">う</OPTION>
</select>
</TR>
</TABLE>
<TR><TD>
<!--<INPUT type="submit" value=登録 name=B1 onClick="return test();">-->
<INPUT type="submit" value=登録 name=B1>
</TD></TR>
</FORM>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript console.logがどうしても2つ機能しないのでアドバイスをくださいお願いします 2 2022/07/07 22:13
- JavaScript JavascriptからSQLへ繋ぎ方が分からない 3 2022/07/07 00:27
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript 電車の運賃を出すプログラムを作っています。 2 2022/06/22 09:36
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- JavaScript 中百舌鳥駅と深井駅を入れ替えて選択しても同じ挙動にしたいです。 2 2022/06/24 18:45
- JavaScript 2段階プルダウンで1段階目の選択を終えた後に選択ボックスを見えなくしたい 2 2022/07/05 21:58
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
name属性が同じフォームが複数...
-
クイズ作成:15個の問題から5個...
-
visual sutudio2012でのコード...
-
テキストボックスに入力された...
-
innerHTML内では改行は禁止?
-
javascriptでクイズ
-
クリックされた罫表セルの行番...
-
複数Formから値を取得するやりかた
-
特定<table>内の<td>の色を変える
-
slickのレスポンシブ > center...
-
Nameは配列で、チェックされた...
-
submitした値を返したい
-
jQueryでクリックされたテーブ...
-
Cookieに保存されない
-
同一nameの input type="text"...
-
Selectの中身をfor文で入れる
-
インラインフレームから親ウィ...
-
Selectボックスの幅を自動で広...
-
クリックさせたいが、click()が...
-
プルダウン 項目が多いので先頭...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
value内に変数を入れたい
-
hiddenのvalueの値を変えたい
-
javascriptでhiddenに二次元配...
-
複数のsubmitボタンで押された...
-
テキストボックスに入力された...
-
switchを使って四則演算のプロ...
-
VB.NET DateTimeの型について
-
クイズ作成:15個の問題から5個...
-
C言語クイックソートの比較総回...
-
セレクトボックスの初期選択状...
-
ラジオボタンの選択で解答・点...
-
子から親へチェックボックスの...
-
ラジオボタンと連動して文字列...
-
setIntervalの間隔を途中で変更...
-
JAVASCRIPTで、ボタンを押した...
-
sessionStorageを調べています。
-
クリックの度に加算していくには?
-
マクロ オブジェクト変数With...
-
3桁区切りのカンマをつけたい...
-
selectboxのoptionタグのvalue...
おすすめ情報