質問編集履歴

1

回答に沿って訂正

2018/12/19 07:53

投稿

igaiga
igaiga

スコア144

test CHANGED
File without changes
test CHANGED
@@ -14,36 +14,232 @@
14
14
 
15
15
  ```
16
16
 
17
+ <form id="contact-form" action="./check.php" method="post" data-validate>
18
+
19
+ <dl class="relative input_set">
20
+
21
+ <dt><label for="name">ご相談内容</label></dt>
22
+
23
+ <dd><textarea cols="40" rows="8" name="message" id="message" class="voluntary"></textarea><span class="option"></span></dd>
24
+
25
+ </dl>
26
+
27
+ <h3 class="bolder_h3">お客様情報</h3>
28
+
29
+ <dl class="relative input_set">
30
+
31
+ <dt><label for="name">お名前</label></dt>
32
+
33
+ <dd>
34
+
35
+ <input type="text" name="name" id="name" value="" placeholder="太郎" class="necessary v_required" required>
36
+
37
+ <span class="required"></span>
38
+
39
+ </dd>
40
+
41
+ </dl>
42
+
43
+ <dl class="relative input_set">
44
+
45
+ <dt><label for="name">メールアドレス</label></dt>
46
+
47
+ <dd>
48
+
49
+ <input type="text" name="mail" id="mail" value="" placeholder="半角英数 (例:info@example.com)" class="necessary v_mail" required>
50
+
51
+ <span class="required"></span>
52
+
53
+ </dd>
54
+
55
+ </dl>
56
+
57
+ <dl class="relative input_set">
58
+
59
+ <dt><label for="name" required>電話番号</label></dt>
60
+
61
+ <dd>
62
+
63
+ <input type="text" name="tel" id="tel" value="" class="necessary v_phone" required>
64
+
65
+ <span class="required" required></span>
66
+
67
+ </dd>
68
+
69
+ </dl>
70
+
71
+ <div class="btn">
72
+
73
+ <button type="submit" data-icon="check" class="form_btn" id="send_button">入力内容のご確認</button>
74
+
75
+ </div>
76
+
77
+ </form>
78
+
79
+ </div>
80
+
81
+ </div>
82
+
83
+ <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
84
+
85
+ <script type="text/javascript">
86
+
17
- $("input").each(function(){
87
+ $("select").each(function(){
88
+
89
+ $(this).on('change', hoge(this));
90
+
91
+ });
92
+
93
+ $("textarea,input").each(function(){
18
94
 
19
95
  $(this).on('keyup', hoge(this));
20
96
 
21
97
  });
22
98
 
99
+
100
+
101
+ var str;
102
+
103
+ var required;
104
+
105
+ var voluntary;
106
+
107
+ function hoge(elm){
108
+
109
+ var v, old = elm.value;
110
+
111
+ return function(){
112
+
113
+
114
+
115
+ if(old != (v=elm.value)){
116
+
117
+ old = v;
118
+
119
+ str = $(this).val();
120
+
121
+ required = $(this).hasClass('v_required');
122
+
123
+ required = $(this).hasClass('v_required');
124
+
125
+ required = $(this).hasClass('v_required');
126
+
127
+ voluntary = $(this).hasClass('voluntary');
128
+
129
+ v_email = $(this).hasClass('v_mail');
130
+
131
+ v_phone = $(this).hasClass('v_phone');
132
+
133
+ var reg_email = /^[A-Za-z0-9]{1}[A-Za-z0-9_.-]*@{1}[A-Za-z0-9_.-]{1,}.[A-Za-z0-9]{1,}$/;
134
+
135
+ var reg_phone = /^(0{1}\d{1,4}-{0,1}\d{1,4}-{0,1}\d{4})$/;
136
+
137
+ if(required == true){
138
+
139
+ if(str == ""){
140
+
141
+ $(this).removeClass("inputOk");
142
+
143
+ $(this).addClass("inputError");
144
+
145
+ $(this).before('<div class="add">必須項目です</div>');
146
+
147
+ } else {
148
+
149
+ $(this).addClass("inputOk");
150
+
151
+ $(this).removeClass("inputError");
152
+
153
+ $(this).prev().remove();
154
+
155
+ }
156
+
157
+ }else if(voluntary == true){
158
+
159
+ if(str == ""){
160
+
161
+ $(this).removeClass("optionOk");
162
+
163
+ } else {
164
+
165
+ $(this).addClass("optionOk");
166
+
167
+ }
168
+
169
+ }else if(v_email == true){
170
+
171
+ if(str == ""){
172
+
173
+ $(this).removeClass("inputOk");
174
+
175
+ $(this).addClass("inputError");
176
+
177
+ $(this).prev(".add").remove();
178
+
179
+ $(this).before('<div class="add">必須項目です</div>');
180
+
181
+ }else if(reg_email.test(str)){
182
+
183
+ $(this).addClass("inputOk");
184
+
185
+ $(this).removeClass("inputError");
186
+
187
+ $(this).prev(".add").remove();
188
+
189
+ } else {
190
+
191
+ $(this).removeClass("inputOk");
192
+
193
+ $(this).removeClass("inputError");
194
+
195
+ $(this).prev(".add").remove();
196
+
197
+ $(this).before('<div class="add">半角数字とハイフンのみご利用できます</div>');
198
+
199
+ }
200
+
201
+ }else if(v_phone == true){
202
+
203
+ if(str == ""){
204
+
205
+ $(this).removeClass("inputOk");
206
+
207
+ $(this).addClass("inputError");
208
+
209
+ $(this).prev(".add").remove();
210
+
211
+ $(this).before('<div class="add">必須項目です</div>');
212
+
213
+ } else if(reg_phone.test(str)) {
214
+
215
+ $(this).addClass("inputOk");
216
+
217
+ $(this).removeClass("inputError");
218
+
219
+ $(this).prev(".add").remove();
220
+
221
+ } else {
222
+
223
+ $(this).removeClass("inputOk");
224
+
225
+ $(this).removeClass("inputError");
226
+
227
+ $(this).prev(".add").remove();
228
+
229
+ $(this).before('<div class="add">半角数字とハイフンのみご利用できます</div>');
230
+
231
+ }
232
+
233
+ }
234
+
235
+ }
236
+
237
+ }
238
+
239
+ }
240
+
241
+
242
+
243
+ </script>
244
+
23
245
  ```
24
-
25
-
26
-
27
- 下記のように変更してみましたが、思ったように動きませんでした。
28
-
29
- たぶんthisに入る値がloadだとおかしくなるのかなと思いますが、
30
-
31
- どのようにすればいいかわからなくなってしまったのでアドバイスいただけると助かります。
32
-
33
- 宜しくお願い致します。
34
-
35
-
36
-
37
- ### 変更したいソースコード
38
-
39
- ```
40
-
41
- $("input").each(function(){
42
-
43
- $(this).on('keyup', hoge(this));
44
-
45
- $(this).on('load', hoge(this));
46
-
47
- });
48
-
49
- ```