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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

2回答

3820閲覧

エントリーシートの入力エラー(JavaScript)がうまく表示されません。

r110

総合スコア16

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2017/09/05 01:42

編集2017/09/05 02:03

エントリーシートを作成したのですが、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});

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

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

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

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

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

m.ts10806

2017/09/05 01:56

htmlとjavascriptはコードブロックをわけてもらえると助かります。その際にコードブロック冒頭を```html や ```javascript など書くと言語にあわせていい感じにハイライトしてくれます。
r110

2017/09/05 01:59

ご連絡ありがとうございます。分けて作成しました。どうぞ宜しくお願いいたします!
m.ts10806

2017/09/05 02:04 編集

確かにWindowsのローカル環境では(Apache配下でも)同エラーはでませんね。サーバー側の環境を可能な範囲で結構ですので質問に追記いただけますか?改行コードの問題とかアップロード時の形式の問題かもしれません。
r110

2017/09/05 02:14

ご確認頂きありがとうございます。サーバー側の環境というのは、どの様なことをお伝えすればいいのでしょうか?初心者で申し訳ありません!
m.ts10806

2017/09/05 02:36

私自身サーバーに精通しているわけではないのですが、サーバーの種類(CentOSとか)、サーバー実行環境(Apacheとか)、自身が利用されている「サイト」に関して状況が分かるものですね。もしレンタルなのであれば仕様が公開されていますのでレンタル先とプラン?のようなものを教えてもらえればこちら側でもある程度確認できます。
m.ts10806

2017/09/05 02:36

あとできればサイトにアップする際に利用しているツールや設定があれば併せてお願いします。
guest

回答2

0

HTMLがShift_JISで書かれているとかですかね?

HTML

1<script src="validate.js" charset="UTF-8"></script>

投稿2017/09/14 04:29

x_x

総合スコア13749

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

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

r110

2017/09/15 03:00

ご回答ありがとうございます、HTMLはShift_JISで書いています。 それが原因の場合は、どのように修正したらよろしいのでしょうか?
x_x

2017/09/15 04:38

すでに回答しています。
r110

2017/09/15 04:57

失礼しました!ご連絡ありがとうございます。
guest

0

スラッシュが全角になってるとかってことはないですよね

投稿2017/09/13 16:29

kosukeKKKK

総合スコア14

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

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

r110

2017/09/15 02:57

ご回答ありがとうございます。スラッシュ確認しましたが、全角になっていませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問