このようなフォーム(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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
setIntervalの間隔を途中で変更...
-
[Javascript]TEXTAREAで改行さ...
-
Jqueryを使って値の合計を簡単...
-
ユーザーフォームでの検索結果...
-
プルダウンから移動時のフレー...
-
1つのページにformを2つ設置。2...
-
onchangeイベントを強制的に発...
-
このjavascriptがわかりません
-
onClickとsubmitの処理順序
-
新しくフォルダを作成したい
-
javascriptで二重送信防止
-
JavaScript Form OPTION value
-
テキストの背景色を変える。
-
2次元配列で2項目についてソー...
-
ラジオボタンの値でリンク先を...
-
マウスをブラウザの外に出した...
-
JavaScriptで特定のtdタグにcla...
-
数字の1文字目を消したい
-
onclickで画像と文字を別々の場...
-
クリックさせたいが、click()が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
value内に変数を入れたい
-
UART通信の取説で,left floati...
-
javascriptでhiddenに二次元配...
-
hiddenのvalueの値を変えたい
-
VB.NET DateTimeの型について
-
テキストボックスに入力された...
-
CDOMailで本文テキストの文字コ...
-
setIntervalの間隔を途中で変更...
-
javascriptにてHTMLのhiddenエ...
-
ラジオボタンの選択で解答・点...
-
子から親へチェックボックスの...
-
フォームで入力した値を別のフ...
-
複数のsubmitボタンで押された...
-
selectboxのoptionタグのvalue...
-
Pythonで会員サイトの自動ログ...
-
クイズ作成:15個の問題から5個...
-
どのボタンがクリックされたの...
-
eval()を使わずに数値を取得し...
-
VBAをJavaScriptに変換したいです
-
ホームページビルダーのスクリ...
おすすめ情報