teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

コードの修正・エラー表示追記

2019/12/25 12:45

投稿

cyamio
cyamio

スコア4

title CHANGED
File without changes
body CHANGED
@@ -99,70 +99,31 @@
99
99
  </script>
100
100
  <!-- reCAPTCHA -->
101
101
  ```
102
- index.php コンタクト部分
102
+ script.php
103
103
  ```
104
+ ``` $("form").submit(function(){ //submit イベント
104
- ```
105
+ //エラー表示の初期化
105
- <div id="confirm">
106
+ $("p.error").remove();
106
- <h2 class="">お問い合わせ内容確認</h2>
107
107
 
108
- <div>
109
- <p class="">名前</p>
110
- <p id="confirm-name"></p>
111
- </div>
108
+ //reCAPTCHA の検証
109
+ if(!$('#recaptcha').hasClass('verified')) {
110
+ $('#recaptcha').append("<p class='error' id='recaptcha_error'>チェックを入れてください</p>");
112
111
 
113
- <div>
112
+ }
114
- <p class="">メールアドレス</p>
115
- <p id="confirm-email"></p>
116
- </div>
117
113
 
118
- <div>
114
+ //error クラスの追加の処理
119
- <p class="">お問い合わせ内容</p>
115
+ if($("p.error").length() > 0){ //エラーがあれば
120
- <p id="confirm-content"></p>
121
- </div>
122
116
 
123
- <div id="close">
117
+ $("p.error").parent().addClass("error"); //親要素にクラスを追加
124
- <p>閉じる</p>
118
+ }
125
- </div>
119
+ //エラーがあれば送信しない
120
+ if($("p.error").length() > 0){
121
+ return btn_flg = false;
126
122
 
127
- <div id="errorDispaly">
128
- <?php if(isset($error)): ?>
129
- <?php foreach($error as $val): ?>
130
- <?php echo h($val); ?><br />
131
- <?php endforeach; ?>
123
+ }
132
- <?php endif; ?>
124
+ });
133
- </div><!--end of #errorDispaly-->
134
125
 
135
126
 
136
- <form id="mail-form" method="POST" action="sendmail.php">
137
- <!-- reCAPTCHA -->
138
- <div id="recaptcha" class="g-recaptcha" data-sitekey="<?php echo RC_SITE_KEY; ?>"></div>
139
- <noscript>
140
- <p class="error">JavaSrcipt を有効にしてください。JavaSrcipt が無効の場合、このフォームは機能しません。</p>
141
- </noscript>
142
- <!-- reCAPTCHA -->
143
- <input id="name" class="hidden" name="name">
144
- <input id="email" class="hidden" name="mail">
145
- <textarea id="message" class="hidden" name="message"></textarea>
146
- <p>
147
- <input id="send-btn" class="send-submit-btn" type="submit" value="送信">
148
- </p>
149
- <!--確認ページへトークンをPOSTする、隠しフィールド「ticket」-->
150
- <input type="hidden" name="ticket" value="<?php echo h($ticket); ?>">
151
- </form>
152
-
153
- <div id="spinner" class="hidden">
154
- <!-- <span uk-spinner="ratio: 3"></span> -->
155
- </div>
156
- <div id="return-message" class="hidden">
157
- <p></p>
158
- <p></p>
159
- </div>
160
- </div>
161
- </div>
162
-
163
- </section>
164
-
165
-
166
127
  contact.js 部分
167
128
  ```
168
129
  ```"use strict";
@@ -321,6 +282,16 @@
321
282
  ```
322
283
  ### 試したこと
323
284
 
324
- .length を .size にしましたが同じエラーでした。
285
+ .length を .size にしましたが同じエラーでした。こちらです。
325
286
 
287
+ [
288
+ [追記」
289
+ エラー文章は
290
+ Type Error: $(...).length is not a function です。
291
+
292
+ lengthの後ろに()がついていたのでそれをとって見たところ、チェックをしていないのに「チェックを入れてください」も表示されず送信されてしまいます。
293
+
294
+
295
+
296
+
326
297
  よろしくおねがします。