質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

716閲覧

JavaScriptでif文を使い、検索のバリデーションをかけたい

KkkRrr99

総合スコア6

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/05/29 04:08

編集2021/05/29 05:29

前提・実現したいこと

JavaScriptでAjaxやjQueryを使って、検索画面や検索結果画面を作っています。
そこで、if文を使ってバリデーションをかけたいのですが、今の記述だと全部nullの状態でも検索と押すと全件検索されてしまいます。
そもそも、この記述自体があっているのかどうかもわかりません。
登録フォームなどは似たような感じでうまくいったのですが、検索だと難しいです。

内容としては
キーワードが一つも入力されなかった場合、検索できない
という風にしたいです。

できれば、こういう感じ書くんだよみたいな感じで、コードを書いて送ってくれると嬉しいです。

このやり方だと動作しません。

発生している問題・エラーメッセージ

JavaScript

1//nullチェック 2 if ($("#employee_code", "#employee_name", "#furigana", "#mail_address", "#tel_no", "#affiliation_group", "#position").val() === null || 3 $("#employee_code", "#employee_name", "#furigana", "#mail_address", "#tel_no", "#affiliation_group", "#position").val() === "")  { 4 alert("キーワードを入力してください。"); 5 return; 6 }

該当のソースコード

JavaScript

1 //登録画面の表示 2 $("#forRegister").on("click", function() { 3 $.ajax({ 4 url: "/employee/select", 5 type: "GET", 6 contentType: "application/json", 7 }) 8 .done(function(user, textStatus, jqXHR) { 9 $("#p1").empty(); 10 $("#p1").append( 11 '<section><br><br><h2>社員登録</h2><br>' + 12 '<div><form id="form-name">' + 13 '<div class="form-group"><label> 社員番号 </label><input required type="text" class="form-control" placeholder="例 : 000001" id="employee_code" name="employee_code"></div>' + 14 '<div class="form-group"><label> 氏名 </label><input required type="text" class="form-control" placeholder="例 : 山田 太郎" id="employee_name" name="employee_name"></div>' + 15 '<div class="form-group"><label> ふりがな </label><input required type="text" class="form-control" placeholder="例 : やまだ たろう" id="furigana" name="furigana"></div>' + 16 '<div class="form-group"><label> メールアドレス </label><input required type="text" class="form-control" placeholder="例 : example@upload-gp.co.jp" id="mail_address" name="mail_address"></div>' + 17 '<div class="form-group"><label> 電話番号 </label><input required type="text" class="form-control" placeholder="例 : 000-000-000" id="tel_no" name="tel_no"></div>' + 18 '<div class="form-group"><label> 所属グループ </label><select class="form-control" id="affiliation_group" name="affiliation_group"><option value="">選択してください</option></select></div>' + 19 '<div class="form-group"><label> 役職 </label><select class="form-control" id="position" name="position"><option value="">選択してください</option></select></div>' + 20 '<div style="text-align: center; margin-top: 30px;">' + 21 '<button class="c" type="button" id="register">登録する</button>' + 22 '</div></form></div></section>' 23 ); 24 for (var j = 0; j < user[0].length; j++) { 25 $("#affiliation_group").append($('<option>').html(user[0][j].name).val(user[0][j].value)); 26 } 27 for (var j = 0; j < user[1].length; j++) { 28 $("#position").append($('<option>').html(user[1][j].name).val(user[1][j].value)); 29 } 30 }) 31 .fail(function(jqXHR, textStatus, errorThrown) { 32 $("#p1").text(jqXHR.status); //例:404 33 }) 34 .always(function() {}); 35 }); 36 37 38 //登録する 39 $(document).on("click", "#register", function() { 40 41 //社員番号のnullチェック 42 if ($("#employee_code").val() === null || $("#employee_code").val() === "") { 43 alert("社員番号を入力してください。"); 44 return; 45 } 46 47 //社員番号の文字数チェック 48 if ($("#employee_code").val().length !== 6) { 49 alert("社員番号を6文字で入力してください。");       50 return; 51 } 52 53 //氏名のnullチェック 54 if ($("#employee_name").val() === null || $("#employee_name").val() === "") { 55 alert("氏名を入力してください。"); 56 return; 57 } 58 59 //氏名の文字数チェック 60 if ($("#employee_name").val().length > 100) { 61 alert("氏名を100文字以内で入力してください。") 62 return; 63 } 64 65 //ふりがなのnullチェック 66 if ($("#furigana").val() === null || $("#furigana").val() === "") { 67 alert("ふりがなを入力してください。"); 68 return; 69 } 70 71 //ふりがなの文字数チェック 72 if ($("#furigana").val().length > 100) { 73 alert("ふりがなを100文字以内で入力してください。") 74 return; 75 } 76 77 //メールアドレスのnullチェック 78 if ($("#mail_address").val() === null || $("#mail_address").val() === "") { 79 alert("メールアドレスを入力してください。"); 80 return; 81 } 82 83 //メールアドレスの文字数チェック 84 if ($("#mail_address").val().length > 50) { 85 alert("メールアドレスを50文字以内で入力してください。"); 86 return; 87 } 88 89 //メールアドレスの形式チェック 90 var mailAddressChecker = /^[a-zA-Z0-9_+-]+(.[a-zA-Z0-9_+-]+)*@([a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]*.)+[a-zA-Z]{2,}$/; 91 if (!mailAddressChecker.test($("#mail_address").val())) { 92 alert("メールアドレスの形式で入力してください。"); 93 return; 94 } 95 96 //電話番号のnullチェック 97 if ($("#tel_no").val() === null || $("#tel_no").val() === "") { 98 alert("電話番号を入力してください。"); 99 return; 100 } 101 102 //電話番号の文字数チェック 103 if ($("#tel_no").val().length > 13) { 104 alert("電話番号を13文字以内で入力してください。"); 105 return; 106 } 107 108 //電話番号の形式チェック 109 var telephoneChecker = /^0\d{2,3}-\d{1,4}-\d{4}$/; 110 if (!telephoneChecker.test($("#tel_no").val())) { 111 alert("電話番号の形式で入力してください。"); 112 return; 113 } 114 115 //所属のnullチェック 116 if ($("#affiliation_group").val() === null || $("#affiliation_group").val() === "") { 117 alert("所属を選択してください。"); 118 return; 119 } 120 121 //役職のnullチェック 122 if ($("#position").val() === null || $("#position").val() === "") { 123 alert("役職を選択してください。"); 124 return; 125 } 126 127 128 var json1 = { 129 employee_code: $("#employee_code").val(), 130 employee_name: $("#employee_name").val(), 131 furigana: $("#furigana").val(), 132 mail_address: $("#mail_address").val(), 133 tel_no: $("#tel_no").val(), 134 affiliation_group_code: $("#affiliation_group").val(), 135 position_code: $("#position").val(), 136 }; 137 $.ajax({ 138 url: "/employee/register", 139 type: "POST", 140 contentType: "application/json", 141 data: JSON.stringify(json1), 142 dataType: "json", 143 }) 144 .done(function(userList, textStatus, jqXHR) { 145 $("#p1").empty() 146 $("#p1").append('<h4>登録が完了しました</h4>') 147 }) 148 .fail(function(jqXHR, textStatus, errorThrown) { 149 $("#p1").text(jqXHR.status); 150 }) 151 .always(function() {}); 152 }); 153 154 155 //検索画面の表示 156 $("#forSearch").on("click", function() { 157 $.ajax({ 158 url: "/employee/select", 159 type: "GET", 160 contentType: "application/json", 161 }) 162 .done(function(user, textStatus, jqXHR) { 163 $("#p1").empty(); 164 $("#p1").append( 165 '<section><br><br><h2>検索</h2><br>' + 166 '<div><form>' + 167 '<div class="form-group"><label> 社員番号 </label><input type="text" class="form-control" placeholder="例 : 000001" id="employee_code"></div>' + 168 '<div class="form-group"><label> 氏名 </label><input type="text" class="form-control" placeholder="例 : 山田 太郎" id="employee_name"></div>' + 169 '<div class="form-group"><label> ふりがな </label><input type="text" class="form-control" placeholder="例 : やまだ たろう" id="furigana"></div>' + 170 '<div class="form-group"><label> メールアドレス </label><input type=text class="form-control" placeholder="例 : example@upload-gp.co.jp" id="mail_address"></div>' + 171 '<div class="form-group"><label> 電話番号 </label><input type=text class="form-control" placeholder="例 : 000-000-000" id="tel_no"></div>' + 172 '<div class="form-group"><label> 所属グループ </label><select class="form-control" id="affiliation_group"><option value="">選択してください</option></select></div>' + 173 '<div class="form-group"><label> 役職 </label><select class="form-control" id="position"><option value="">選択してください</option></select></div>' + 174 '<div style="text-align: center; margin-top: 30px;">' + 175 '<button class="c" type="button" id="search">検索する</button>' + 176 '</div></form></div></section>' 177 ); 178 for (var j = 0; j < user[0].length; j++) { 179 $("#affiliation_group").append($('<option>').html(user[0][j].name).val(user[0][j].value)); 180 } 181 for (var j = 0; j < user[1].length; j++) { 182 $("#position").append($('<option>').html(user[1][j].name).val(user[1][j].value)); 183 } 184 185 }) 186 .fail(function(jqXHR, textStatus, errorThrown) { 187 $("#p1").text(jqXHR.status); //例:404 188 }) 189 .always(function() {}); 190 }); 191 192 193 //検索結果画面 194 $(document).on("click", "#search", function() { 195 196 //nullチェック 197 if ($("#employee_code", "#employee_name", "#furigana", "#mail_address", "#tel_no", "#affiliation_group", "#position").val() === null || 198 $("#employee_code", "#employee_name", "#furigana", "#mail_address", "#tel_no", "#affiliation_group", "#position").val() === "")  { 199 alert("キーワードを入力してください。"); 200 return; 201 } 202 203 204

HTMLはこれで終わりです。
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KkkRrr99

2021/05/29 05:32

これは大変失礼いたしました。 今起きてる状況を、的確に記載しました。 HTMLはコードで記載すると、一万字超えてしまうため、元々HTMLも大したこと記載してなので画像で失礼いたします。
m.ts10806

2021/05/29 06:29

画像で提示されてもこちらで確認できません。 問題が起きる最小構成のコードは難しいですか?
KkkRrr99

2021/05/29 06:37

HTMLとか他のコードは、構成的にバリデーションには直接関係なくて 登録フォームの所は、同じようにif文を使ってJavaScriptだけで出来ています。 聞きたいのは、 書いてる検索のif文が間違っているのか、 間違っているなら、どう違うのか。 できれば、こういう感じ書くんだよみたいな感じで、コードを書いて送ってくれると嬉しいです。
m.ts10806

2021/05/29 06:45 編集

>コードを書いて送ってくれると あぁなるほど。質問ではなく作業依頼でしたか。それは失礼。 「質問者のコードが手元で試せるかどうか」って結構回答者には重要なのですけどね。 ではでは。
guest

回答1

0

ベストアンサー

jQuery ですよね?

javascript

1$("#employee_code", "#employee_name", ...)

の引数の指定が明らかに間違っているかと思います。(参考: https://api.jquery.com/jQuery/)

javascript

1if (!$("#employee_code").val() && !$("#employee_name").val() && ...) { 2 alert("キーワードを入力してください。"); 3 return; 4}

というようにひとつずつチェックすれば良いと思います。

投稿2021/05/29 07:17

yh1224

総合スコア653

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KkkRrr99

2021/05/29 07:47

うまくいきました!!ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問