前提・実現したいこと
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
回答1件
あなたの回答
tips
プレビュー