下記コードにてテキストボックスが未入力の場合、送信ボタンを押したらアラートが出る様にしたいのですがうまくいきません。
教えて頂きたくお願い致します。
HTML:
<form action="test.html" method="POST" id="form">
<div class="question-form">
<div class="areas">
<div class="columns">会社名・団体名</div>
<div class="rows"><input type="text" name="sample" class="input-text"><br>(例:**株式会社、**大学**学部**学科)</div>
</div>
<div class="areas">
<div class="columns">氏名(漢字)<span class="red">(必須)</span></div>
<div class="rows"><input type="text" name="sample" class="input-text"><br>例:令和太郎)</div>
</div>
<div class="areas">
<div class="columns">氏名(フリガナ)<span class="red">(必須)</span></div>
<div class="rows"><input type="text" name="sample" class="input-text"><br>(例:令和タロウ))</div>
</div>
<div class="areas">
<div class="columns">メールアドレス<span class="red">(必須)</span></div>
<div class="rows"><input type="text" name="sample" class="input-text"><br>(例:XXXXX@zyz.jp)<br><span class="red">半角</span>でお願いします。</div>
</div>
<div class="areas">
<div class="columns">メールアドレス(確認)<span class="red">(必須)</span></div>
<div class="rows"><input type="text" name="sample" class="input-text"><br>(例:XXXXX@zyz.jp)<br><span class="red">半角</span>でお願いします.</div>
</div>
<div class="areas">
<div class="columns">郵便番号</div>
<div class="rows"><input type="text" name="sample" class="input-text"><br>(例:例:123-4567)<br><span class="red">半角</span>でお願いします。</div>
</div>
<div class="areas">
<div class="columns">住所</div>
<div class="rows"><input type="text" name="sample" class="input-text"></div>
</div>
<div class="areas">
<div class="columns">TEL</div>
<div class="rows"><input type="text" name="sample" class="input-text"><br>(例:例:03-1234-5678)<br><span class="red">半角</span>でお願いします。</div>
</div>
<div class="areas">
<div class="columns">FAX</div>
<div class="rows"><input type="text" name="sample" class="input-text"><br>(例:例:03-1234-5678<br><span class="red">半角</span>でお願いします。</div>
</div>
<div class="areas">
<div class="columns">お問合せ内容、お見積りはこちらへどうぞ<span class="red">(必須)</span></div>
<div class="rows"><textarea name="textarea" rows="10" cols="40" class="input-text"></textarea><br>(例:例:03-1234-5678)<br><span class="red">半角</span>でお願いします。</div>
</div>
<div class="columns-submit">内容をご確認の上、よろしければ下記ボタンをクリックして下さい。</div>
<div class="rows-submit"><input type="submit" name="sample" value="送信" class="input-text"></div>
<div class="submit-text">(上記ボタンを押した後、次の画面がでるまで、4~5秒かかりますので、続けて2回押さないようにお願いいたします。)</div>
</div>
</form>
____________________________________________
Javascript:
let blank = document.querySelectorAll('.input-text').value;
document.getElementById('form').onsubmit = function() {
if(blank === "") {
window.alert('入力されていません');
return false;
}
};
No.3ベストアンサー
- 回答日時:
No1です。
>分かりませんでした。
>出来ればご教示お願い致します。
え~~っと・・・
仮に、ご提示のコードがそのまま動作したとしての話ですが・・・
HTML表示時にスクリプトが解釈されて、要素の値を取得します。
仮に、値を無事取得できたとして、その値はユーザが入力前の値なので、当然ながら未入力となります。
その後、ユーザが入力なりして送信ボタンを押すと、スクリプトで設定しておいたfunctionが実行されますが、その中では上記の値(=未入力)を参照して判断しているので、常に未入力となり、質問者様の期待とは違う結果になるであろうということです。
要は、「イベント時の処理関数内で値を読み込む必要がある」ということですね。
一方で、スクリプトを利用するよりも、もっと簡単な解決方法をNo2様がご提案くださっています。
No.2
- 回答日時:
No.1
- 回答日時:
こんにちは
いろいろありますけれど・・・
・まずは、スクリプトの位置はどこにあるのでしょうか。
というのも、form要素よりも後にないと、querySelectorAllで何も取得できないはずです。
・次に、querySelectorAllの戻り値は要素リスト(=配列に似たオブジェクト)です。
value属性で何が返るのかを確認してみましょう。
・さらには、仮にvalueを取得できたとしても(その時点では未入力状態)、その値を後でチェックしても未入力のまま変わらないはずです。
(実際にはvalueは取得できていませんが)
といったあたりを再確認してみれば、よろしいのではないでしょうか?
ご質問とは直接関係はありませんけれど、ご提示のHTMLで「必須」となっているのは、class=redの要素のようにみえますが、スクリプトでチェックしようとしているのは、class=input-textの要素みたいです。
なさりたいことと内容とが合致しているのでしょうか??
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- HTML・CSS CSSのホバーエフェクト 1 2023/06/19 06:53
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
折りたたみを全て開いて別ペー...
-
確認ダイアログを次からは表示...
-
formのsubmitを押すとモーダル...
-
Q&A掲示板の入力フォームに文字...
-
CSSでreadonlyの機能はあり...
-
動画の上に広告をオーバーレイ...
-
「ご処理進めて頂きますようお...
-
HTMLです。画像をHTMLで表した...
-
エクセルで、日付を入力すると...
-
CloseとDisposeの違い
-
VBAでループ内で使う変数名を可...
-
エクセルVBAで、MsgBox やInput...
-
VBA エンターキーでイベントに...
-
Excelシート上のマクロを登録し...
-
【Excel VBA】マクロボタンを表...
-
「PC Helpsoft Driver Updated...
-
アクセスVBAのMe!と[ ]
-
UPS警告音を止めたい
-
【Excel】特定の文字を含むセル...
-
DoEventsがやはり分からない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
確認ダイアログを次からは表示...
-
CSSでreadonlyの機能はあり...
-
formのsubmitを押すとモーダル...
-
Q&A掲示板の入力フォームに文字...
-
JavascriptのHTMLクラス表示に...
-
3重のクォーテーション
-
JavaScriptのinnerHTMLの挙動に...
-
特定の条件のHTML要素を一括で...
-
クリックすると、色が変わるよ...
-
jqueryを使ったスムーススクロ...
-
折りたたみを全て開いて別ペー...
-
jQuery 画面サイズにスライド画...
-
2回目以降のページロード時には...
-
Bootstrap Javascriptでモーダル
-
jQueryのSlickで矢印アイコンが...
-
javascriptとcssでフォントサイ...
-
JavaScriptのdiv.style属性の変...
-
フォームで「パスワード(確認...
-
macかwinか判別しスタイルシー...
-
javascript htmlの追記について
おすすめ情報
回答ありがとうございます。
アドバイス頂きました点につきまして、
・まずは、スクリプトの位置はどこにあるのでしょうか。
というのも、form要素よりも後にないと、querySelectorAllで何も取得できないはずです。
↓
スクリプトは</body>の直前に入れました。
・次に、querySelectorAllの戻り値は要素リスト(=配列に似たオブジェクト)です。
value属性で何が返るのかを確認してみましょう。
↓
underfindと表示される。
querySelectorAllはノードリストというひとかたまりのデータを取得する為、テキストの入力欄のデータを取得できるわけではない。
・さらには、仮にvalueを取得できたとしても(その時点では未入力状態)、その値を後でチェックしても未入力のまま変わらないはずです。
↓
分かりませんでした。
出来ればご教示お願い致します。