エントリーシートを作成したのですが、javascriptで作成した入力エラー表示がでません。
ローカルで確認すると作動するのですが、サイトにあげると表示が出ません。
googleで検証したのですが、
「js:70 Uncaught SyntaxError: Invalid regular expression: missing /」と表示されました。
//全角チェック
case 0:
if(value.match(/^[^ -~。-゚]*$/)){ ←70行目はここの部分なのですが、
「/(スラッシュ)」が抜けているということなのでしょうか?
jsは全くの初心者で、エラーの意味もわかりません。
入力エラーが表示される様にするにはどうしたらいいのか、教えていただけますでしょうか。
どうぞよろしくお願いいたします。
html
1<div class="prof_form"> 2<form id="entryForm" method="post"> 3 4<table> 5<tr> 6<th scope="row" class="item"><label for="formName">お名前(漢字)</label></th> 7<td class="hissu">必須</td> 8<td ><input type="text" name="formName" id="formName" placeholder="販促 太郎" ></td> 9</tr> 10 11<tr> 12<th scope="row" class="item"><label for="formFurigana">ふりがな(ひらがな)</label></th> 13<td class="hissu">必須</td> 14<td><input type="text" name="formFurigana" id="formFurigana" placeholder="はんそく たろう"></td> 15</tr> 16 17<tr> 18<th scope="row" class="item"><label for="formPostcode">郵便番号</label></th> 19<td class="hissu">必須</td> 20<td><input type="text2" name="formPostcode" id="formPostcode" placeholder="100 - 1000"></td> 21</tr> 22 23<tr> 24<th scope="row" class="item">都道府県 </th> 25<td class="hissu">必須</td> 26<td><select name="address"> 27<option value="" selected="selected">選択して下さい</option> 28<optgroup label="北海道・東北地方"> 29<option value="北海道">北海道</option> 30<option value="沖縄県">沖縄県</option> 31</optgroup> 32</select> 33</td> 34</tr> 35 36<tr> 37<th scope="row" class="item"><label for="formAdd">ご住所</label></th> 38<td class="hissu">必須</td> 39<td ><input type="text" name="formAdd" id="formAdd" placeholder="東京都" ></td> 40</tr> 41 42<tr> 43<th scope="row" class="item"><label for="formTell">電話番号</label></th> 44<td class="hissu">必須</td> 45<td><input type="text" name="formTell" id="formTell" placeholder="100-0005-0005" ></td> 46</tr> 47<tr> 48 49<th scope="row" class="item"><label for="formMail">メールアドレス</label></th> 50<td class="hissu">必須</td> 51<td><input type="text" name="formMail" id="formMail" placeholder="taro.hansoku@calneco.co.jp"></td> 52</tr> 53</table> 54</form> 55</div>
javascript
1$(function(){ 2 3 function setentryForm(target){ 4 5 var ERROR_MESSAGE_CLASSNAME = 'errorMsg'; //エラー時のメッセージ要素のclass名 6 var ERROR_INPUT_CLASSNAME = 'errorInput'; //エラー時のinput要素のclass名 7 8 var items = []; //チェック対象となるテキスト入力要素を格納した配列 9 var addressObj; //チェック対象となるselect要素のセレクタを格納した変数 10 var genreObj; //チェック対象となるcheckbox要素のセレクタを格納した変数 11 12 //項目チェックする 13 function checkAll(){ 14 var errorCount = 0; 15 //input,textareaのチェック 16 for( var i=0; i<items.length; i++ ){ 17 if( items[i].prop('isSuccess') == false ){ 18 errorCount++; 19 }; 20 }; 21 //selectのチェック 22 if( addressObj.prop('isSuccess') == false ){ 23 errorCount++; 24 }; 25 //チェックボックスのチェック 26 if( genreObj.isSuccess == false ){ 27 errorCount++; 28 }; 29 //エラーカウントが0であれば、エラー無し 30 if( errorCount == 0 ){ 31 target.find('input[type=submit]').attr('disabled', false); 32 }else{ 33 target.find('input[type=submit]').attr('disabled', true); 34 }; 35 }; 36 37 //エラーメッセージの追加 38 function addErrorMessage(selector, msg){ 39 removeErrorMessage(selector); 40 selector.before('<span class="'+ERROR_MESSAGE_CLASSNAME+'">'+msg+'</span>'); 41 selector.addClass(ERROR_INPUT_CLASSNAME); 42 }; 43 44 //エラーメッセージの削除 45 function removeErrorMessage(selector){ 46 var msgSelector = selector.parent().find('.'+ERROR_MESSAGE_CLASSNAME); 47 if( msgSelector.length != 0 ){ 48 msgSelector.remove(); 49 selector.removeClass(ERROR_INPUT_CLASSNAME); 50 }; 51 }; 52 53 //input,textareaの未入力チェック 54 function checkEmptyText(selector, msg){ 55 if( selector.val() == '' ){ 56 addErrorMessage(selector, msg); 57 selector.prop('isSuccess', false); 58 }else{ 59 removeErrorMessage(selector); 60 selector.prop('isSuccess', true); 61 }; 62 }; 63 64 //inputのフォーマットチェック 65 function checkFormatText(selector, mode, msg){ 66 var value = selector.val(); 67 switch(mode){ 68 //全角チェック 69 case 0: 70 if(value.match(/^[^ -~。-゚]*$/)){ 71 selector.prop('isSuccess', true); 72 }else{ 73 selector.prop('isSuccess', false); 74 }; 75 break; 76 //ふりがなのみ 77 case 1: 78 if(value.match(/^[\u3040-\u309F]+$/)){ 79 selector.prop('isSuccess', true); 80 }else{ 81 selector.prop('isSuccess', false); 82 }; 83 break; 84 //半角数字のみ 85 case 2: 86 if(value.match(/^[0-9{}-]*$/)){ 87 selector.prop('isSuccess', true); 88 }else{ 89 selector.prop('isSuccess', false); 90 }; 91 break; 92 //メールアドレス 93 case 3: 94 if(value.match(/^[a-zA-Z0-9!$&*.=^`|~#%'+\/?_{}-]+@([a-zA-Z0-9_-]+\.)+[a-zA-Z]{2,6}$/)){ 95 selector.prop('isSuccess', true); 96 }else{ 97 selector.prop('isSuccess', false); 98 }; 99 break; 100 }; 101 if( selector.prop('isSuccess') == false ){ 102 addErrorMessage(selector, msg); 103 }else{ 104 removeErrorMessage(selector); 105 }; 106 }; 107 108 //selectのチェック 109 function checkEmptySelect(selector, msg){ 110 if( selector.val() == '' ){ 111 addErrorMessage(selector, msg); 112 selector.prop('isSuccess', false); 113 }else{ 114 removeErrorMessage(selector); 115 selector.prop('isSuccess', true); 116 }; 117 }; 118 119 //checkboxのチェック 120 function checkEmptyCheckBox(selector, msg, ul){ 121 var item = selector.item; 122 var checkLen = 0; 123 item.each(function(index){ 124 if( $(this).prop('checked') ) checkLen++; 125 }); 126 if( checkLen == 0 ){ 127 addErrorMessage(ul, msg); 128 selector.isSuccess = false; 129 }else{ 130 removeErrorMessage(ul); 131 selector.isSuccess = true; 132 }; 133 }; 134 135 //初期設定 136 function init(){ 137 //submitを無効にする 138 target.find('input[type=submit]').attr('disabled', true); 139 //submitイベントの設定 140 target.on({ 141 'submit': function(){ 142 return false; 143 } 144 }); 145 //input要素を配列に格納 146 items = [ 147 target.find('input[name=formName]'), 148 target.find('input[name=formFurigana]'), 149 target.find('input[name=formTell]'), 150 target.find('input[name=formMail]'), 151 target.find('input[name=formPostcode]'), 152 target.find('input[name=formAdd]'), 153 target.find('input[name=formCompany]'), 154 target.find('input[name=formPosition]'), 155 target.find('textarea[name=formInquiry]') 156 157 ]; 158 //input要素のプロパティを設定 159 $.each(items, function(index){ 160 items[index].prop('isSuccess', false); 161 }); 162 //enterキーでsubmitしてしまうのを防止する 163 target.find('input[type=text]').on({ 164 'keypress': function(e){ 165 if( (e.keyCode == 13) ) return false; 166 } 167 }); 168 //名前 169 items[0].on({ 170 'blur': function(){ 171 checkEmptyText( $(this), 'お名前をご入力ください。' ); 172 if( $(this).prop('isSuccess') ) checkFormatText( $(this), 0, '入力フォーマットが正しくありません。' ); 173 checkAll(); 174 } 175 }); 176 //ふりがな 177 items[1].on({ 178 'blur': function(){ 179 checkEmptyText( $(this), 'ふりがなをご入力ください。' ); 180 if( $(this).prop('isSuccess') ) checkFormatText( $(this), 1, '入力フォーマットが正しくありません。' ); 181 checkAll(); 182 } 183 }); 184 //電話番号 185 items[2].on({ 186 'blur': function(){ 187 checkEmptyText( $(this), '電話番号をご入力ください。' ); 188 if( $(this).prop('isSuccess') ) checkFormatText( $(this), 2, '半角英数でご記入ください' ); 189 checkAll(); 190 } 191 }); 192 //メールアドレス 193 items[3].on({ 194 'blur': function(){ 195 checkEmptyText( $(this), 'メールアドレスをご入力ください。' ); 196 if( $(this).prop('isSuccess') ) checkFormatText( $(this), 3, '入力フォーマットが正しくありません。' ); 197 checkAll(); 198 } 199 }); 200 //お問い合わせ内容 201 //items[4].on({ 202 // 'blur': function(){ 203 // checkEmptyText( $(this), '郵便番号をご入力ください' ); 204 // checkAll(); 205 // } 206 //});// 207 208 items[4].on({ 209 'blur': function(){ 210 checkEmptyText( $(this), '郵便番号をご入力ください' ); 211 if( $(this).prop('isSuccess') ) checkFormatText( $(this), 2, '半角英数でご記入ください' ); 212 checkAll(); 213 } 214 }); 215 216 //お問い合わせ内容 217 items[5].on({ 218 'blur': function(){ 219 checkEmptyText( $(this), '住所をご入力ください。' ); 220 checkAll(); 221 } 222 }); 223 //名前 224 items[6].on({ 225 'blur': function(){ 226 checkEmptyText( $(this), '貴社名をご入力ください。' ); 227 if( $(this).prop('isSuccess') ) checkFormatText( $(this), 0, '入力フォーマットが正しくありません。' ); 228 checkAll(); 229 } 230 }); 231 232 //名前 233 items[7].on({ 234 'blur': function(){ 235 checkEmptyText( $(this), '部署名をご入力ください。' ); 236 if( $(this).prop('isSuccess') ) checkFormatText( $(this), 0, '入力フォーマットが正しくありません。' ); 237 checkAll(); 238 } 239 }); 240 241 242 243 //selectの設定 244 addressObj = target.find('select[name=address]'); 245 addressObj.prop('isSuccess', false).on({ 246 'change': function(){ 247 checkEmptySelect($(this), '都道府県を選択してください。'); 248 checkAll(); 249 } 250 }); 251 //checkboxの設定 252 genreObj = { item: target.find('input[name=formGenre]'), isSuccess: false }; 253 genreObj.item.on({ 254 change: function(){ 255 checkEmptyCheckBox( genreObj, 'お問い合わせ区分にチェックを入れてください。', $('#checkGenreList') ); 256 checkAll(); 257 } 258 }); 259 }; 260 261 init(); 262 263 }; 264 265 setentryForm($('#entryForm')); 266 267});