似たような記事が多くそれぞれの回答を試してみたのですが、うまくいかなかったため質問させていただきます。
ただいまテキストBOXとプルダウンメニューで成り立つ入力フォームを作成しています。
そこで、テキストはすべて入力した状態、プルダウンメニューを一番上以外のものを選択した状態でないと次の画面に遷移しないようにしたいのですが、プルダウンメニューの所だけうまくいきません。どうか回答よろしくお願いします。以下にソースをすべて載せておきます。
<html>
<head>
<title>test</title>
<script language="JavaScript"><!--
function check(){
fName = ["id","name","grade","english","math","japanese","science","society"];
for (i=0; i<8; i++){
txt = document.forms[0].elements[fName[i]].value;
if (txt == "") {
alert("すべての項目を入力してください");
return false;
}
}
var sel;
sel = document.forms.school.value;
if(sel=="00"){
alert("選択されていない項目があります");//アラート表示
return false;
}
return true;
}
// --></script>
</head>
<body>
<form action="student_add1.php" name="forms" method="get" onSubmit="return check()">
生徒番号:<select name="school">
<option value="00">==学校名==</option>
<option value="01">桜中学校</option>
<option value="02">紅葉中学校</option>
<option value="03">青山中学校</option>
<option value="04">高岡中学校</option>
<option value="05">中野中学校</option>
</select><input type="text" name="id" size="3"><br>
氏名:<input type="text" name="name" size="12"><br>
学年:<input type="text" name="grade" size="2"><br>
模試成績:<br><br>英語:<input type="text" name="english" size="3">
数学:<input type="text" name="math" size="3">
国語:<input type="text" name="japanese" size="3">
理科:<input type="text" name="science" size="3">
社会:<input type="text" name="society" size="3"><br>
<input type="submit" value="送信">
<input type="reset" name="reset" value="リセット">
</form>
</body>
</html>
No.2ベストアンサー
- 回答日時:
単純な記載ミスですね
× sel = document.forms.school.value;
○ sel = document.forms[0].school.value;
ちなみにformでcheck()を呼ぶときに
check(this)として、フォームをオブジェクトとしてわたしてやると
かなりすっきりしたスクリプトがかけます
返答が遅くなり申し訳ございません。
指摘していただいたように修正したところ、うまく動作するようになりました。とても早い回答ありがとうございました。
なお、
>check(this)として、フォームをオブジェクトとしてわたしてやると
>かなりすっきりしたスクリプトがかけます
ということですが、その場合
sel = document.forms[0].school.value;を
sel = obj.forms[0].school.value;
と変更することになるのでしょうか?大学の課題でやっている程度ですので、全く詳しいことが理解出来ていません。
余力がございましたらご教授いただけるとうれしく思います。
No.3
- 回答日時:
#2です
たとえば、こんなかんじにformタグのなかでthisをつかうと
そのフォーム自体が関数にわたされます。
今回はそれをfというオブジェクトに格納したので、
document.forms[0]といちいち書かずに、fで代用できるわけです。
フォームを番号で管理しているとhtmlを拡張するときに
番号がかわってしまったりすると書き直しになって管理が大変です。
オブジェクトでわたしてやると名前や番号で管理しなくてすむので
なにかと便利です。
<html>
<head>
<title>test</title>
<script language="JavaScript"><!--
function check(f){
var fName = ["id","name","grade","english","math","japanese","science","society"];
var txt ="";
for (i=0; i<8; i++){
txt = f.elements[fName[i]].value;
if (txt == "") {
alert("すべての項目を入力してください");
return false;
}
}
var sel= f.school.value;
if(sel=="00"){
alert("選択されていない項目があります");//アラート表示
return false;
}
return true;
}
// --></script>
</head>
<body>
<form onSubmit="return check(this)">
・・・・
</form>
</body>
</html>
おお、確かにすっきりしますねぇ。
一応大学の課題は完成したのでここで閉めさせていただきますが、
気が向いたら本格的に勉強してみようと思います。
迅速な回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
hiddenのvalueの値を変えたい
-
複数のsubmitボタンで押された...
-
演算対象の数字と演算子を入力...
-
ラジオボタンとテキストを同時...
-
value内に変数を入れたい
-
Pythonで会員サイトの自動ログ...
-
Kintone(キントーン)でドロップ...
-
selectboxのoptionタグのvalue...
-
VBAをJavaScriptに変換したいです
-
JavaScriptでセレクトボックス...
-
JAVASCRIPTで、ボタンを押した...
-
eval()を使わずに数値を取得し...
-
javascriptにてHTMLのhiddenエ...
-
checkboxとselectメニューの連...
-
name属性が同じフォームが複数...
-
VB.NET DateTimeの型について
-
マクロ オブジェクト変数With...
-
Jqueryを使って値の合計を簡単...
-
setIntervalの間隔を途中で変更...
-
正規表現で複数マッチ条件で悩...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
hiddenのvalueの値を変えたい
-
value内に変数を入れたい
-
引数に数値、文字列の混在
-
複数のsubmitボタンで押された...
-
VB.NET DateTimeの型について
-
3桁区切りのカンマをつけたい...
-
javascriptでhiddenに二次元配...
-
フォームで入力した値を別のフ...
-
setIntervalの間隔を途中で変更...
-
jsで、配列内の文章を改行する...
-
Pythonで会員サイトの自動ログ...
-
selectboxのoptionタグのvalue...
-
テキストボックスに入力された...
-
フォーカスすると初期値が消去...
-
ラジオボタンと連動して文字列...
-
セレクトボックスの初期選択状...
-
sessionStorageを調べています。
-
VBAをJavaScriptに変換したいです
-
ダミーフォームの内容を送信用...
-
javascriptで複数の計算を同時...
おすすめ情報