質問編集履歴

5

既存コード部分に追記・修正

2018/10/14 04:27

投稿

nanoion3co
nanoion3co

スコア8

test CHANGED
File without changes
test CHANGED
@@ -138,6 +138,10 @@
138
138
 
139
139
  ###Javascript(既存コード)
140
140
 
141
+ こちらのコードによって書き出される要素を取得します。
142
+
143
+ 要素の取得は別のコードから行い、このコードの編集はしません。
144
+
141
145
 
142
146
 
143
147
  ```

4

ID addelem を、 addelem0(n)-error に変更

2018/10/14 04:26

投稿

nanoion3co
nanoion3co

スコア8

test CHANGED
File without changes
test CHANGED
@@ -18,19 +18,19 @@
18
18
 
19
19
  <input id="elem" type="text" />
20
20
 
21
- <!-- ここにid addelem が追加される -->
21
+ <!-- ここにid addelem0(n)-errorが追加される -->
22
-
22
+
23
- ```
23
+ ```
24
-
25
-
26
-
24
+
25
+
26
+
27
- 追加される要素のaddelemを取得したいのですが、、
27
+ 追加される要素の addelem0(n)-errorを取得したいのですが、、
28
-
29
-
30
-
28
+
29
+
30
+
31
- ```
31
+ ```
32
-
32
+
33
- let apd = document.getElementById('addelem');
33
+ let apd = document.getElementById('addelem0(n)-error');
34
34
 
35
35
  console.log(apd);
36
36
 
@@ -40,7 +40,7 @@
40
40
 
41
41
 
42
42
 
43
- どの様にすればaddelemを取得できるのかご指導頂ければと思います。
43
+ どの様にすれば addelem0(n)-errorを取得できるのかご指導頂ければと思います。
44
44
 
45
45
  よろしくお願いいたします。
46
46
 
@@ -58,7 +58,7 @@
58
58
 
59
59
  説明不足でしたすみません。
60
60
 
61
- addelem要素を書き出す コード(既存コード)は別にあって、ユーザーの操作によって追加されたり非表示(display:none)にされたりするのですが、
61
+ addelem0(n)-error 要素を書き出す コード(既存コード)は別にあって、ユーザーの操作によって追加されたり非表示(display:none)にされたりするのですが、
62
62
 
63
63
  これを今回別のコードから取得する形になります。
64
64
 
@@ -66,7 +66,7 @@
66
66
 
67
67
  上記のコードだとページが読み込まれた何もない状態(Null)が取得されますよね。。
68
68
 
69
- こちらをaddelem要素が追加・削除される際取得したいです。
69
+ こちらをaddelem0(n)-error 要素が追加・削除される際取得したいです。
70
70
 
71
71
 
72
72
 
@@ -106,7 +106,7 @@
106
106
 
107
107
  <span id="elemtxt" class="elemtxt">
108
108
 
109
- <input id="brt01" class="validating1" type="text" name="名まえ" placeholder="例)なの">
109
+ <input id="addelem01" class="validating1" type="text" name="名まえ" placeholder="例)なの">
110
110
 
111
111
  <!-- ここに取得したい要素が入ります -->
112
112
 
@@ -116,7 +116,7 @@
116
116
 
117
117
  <span id="elemtxt" class="elemtxt">
118
118
 
119
- <input id="brt02" class="validating2" type="text" name="ねんれい" placeholder="例)18">
119
+ <input id="addelem02" class="validating2" type="text" name="ねんれい" placeholder="例)18">
120
120
 
121
121
  <!-- ここに取得したい要素が入ります -->
122
122
 

3

コード部分をバッククオート3つで囲む

2018/10/13 13:05

投稿

nanoion3co
nanoion3co

スコア8

test CHANGED
File without changes
test CHANGED
@@ -90,6 +90,10 @@
90
90
 
91
91
  ###HTML
92
92
 
93
+
94
+
95
+ ```
96
+
93
97
  <div class="parent">
94
98
 
95
99
  <form class="formbase" action="action.php" method="post" id="mail-form" novalidate="novalidate">
@@ -128,7 +132,7 @@
128
132
 
129
133
  </div>
130
134
 
131
-
135
+ ```
132
136
 
133
137
 
134
138
 
@@ -136,6 +140,8 @@
136
140
 
137
141
 
138
142
 
143
+ ```
144
+
139
145
  (function($){
140
146
 
141
147
  $.extend($.validator.messages, {
@@ -333,3 +339,5 @@
333
339
  });
334
340
 
335
341
  })(jQuery);
342
+
343
+ ```

2

URLにリンク追加

2018/10/13 12:33

投稿

nanoion3co
nanoion3co

スコア8

test CHANGED
File without changes
test CHANGED
@@ -82,7 +82,7 @@
82
82
 
83
83
  ###サンプルページ
84
84
 
85
- http://app.liz.blue/jstest/valid/
85
+ [http://app.liz.blue/jstest/valid/](http://app.liz.blue/jstest/valid/)
86
86
 
87
87
 
88
88
 

1

追記です。

2018/10/13 12:07

投稿

nanoion3co
nanoion3co

スコア8

test CHANGED
File without changes
test CHANGED
@@ -43,3 +43,293 @@
43
43
  どの様にすればaddelemを取得できるのかご指導頂ければと思います。
44
44
 
45
45
  よろしくお願いいたします。
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+ ### 追記です。
54
+
55
+
56
+
57
+ ご回答ありがとうございます。
58
+
59
+ 説明不足でしたすみません。
60
+
61
+ addelem要素を書き出す コード(既存コード)は別にあって、ユーザーの操作によって追加されたり非表示(display:none)にされたりするのですが、
62
+
63
+ これを今回別のコードから取得する形になります。
64
+
65
+
66
+
67
+ 上記のコードだとページが読み込まれた何もない状態(Null)が取得されますよね。。
68
+
69
+ こちらをaddelem要素が追加・削除される際取得したいです。
70
+
71
+
72
+
73
+
74
+
75
+ ソースコードは、サンプルページと、少し長くなってしまいますがこちらに既存コードも一応載せておきます。
76
+
77
+ このフォームをブランクのままフォーカスを外したときに表示される label要素を取得したいです。
78
+
79
+
80
+
81
+
82
+
83
+ ###サンプルページ
84
+
85
+ http://app.liz.blue/jstest/valid/
86
+
87
+
88
+
89
+
90
+
91
+ ###HTML
92
+
93
+ <div class="parent">
94
+
95
+ <form class="formbase" action="action.php" method="post" id="mail-form" novalidate="novalidate">
96
+
97
+ <dl class="item-container table elempar3">
98
+
99
+ <dd class="item-minbox cell">
100
+
101
+ <div class="with-validate sellabel">
102
+
103
+ <span id="elemtxt" class="elemtxt">
104
+
105
+ <input id="brt01" class="validating1" type="text" name="名まえ" placeholder="例)なの">
106
+
107
+ <!-- ここに取得したい要素が入ります -->
108
+
109
+ </span>
110
+
111
+
112
+
113
+ <span id="elemtxt" class="elemtxt">
114
+
115
+ <input id="brt02" class="validating2" type="text" name="ねんれい" placeholder="例)18">
116
+
117
+ <!-- ここに取得したい要素が入ります -->
118
+
119
+ </span>
120
+
121
+ </div>
122
+
123
+ </dd>
124
+
125
+ </dl>
126
+
127
+ </form>
128
+
129
+ </div>
130
+
131
+
132
+
133
+
134
+
135
+ ###Javascript(既存コード)
136
+
137
+
138
+
139
+ (function($){
140
+
141
+ $.extend($.validator.messages, {
142
+
143
+ required: "必須項目です。",
144
+
145
+ email: "メールアドレスは正しい形式で入力して下さい。",
146
+
147
+ phone: "電話番号は数字で入力して下さい。",
148
+
149
+ });
150
+
151
+
152
+
153
+ var methods = {
154
+
155
+ phone: function(val, ele){
156
+
157
+ return this.optional(ele) || /^\d{10}|\d{11}$/.test(val);
158
+
159
+ }
160
+
161
+ };
162
+
163
+
164
+
165
+ $.each(methods, function(key, callback){
166
+
167
+ $.validator.addMethod(key, callback);
168
+
169
+ });
170
+
171
+
172
+
173
+ $(function(){
174
+
175
+
176
+
177
+ var emptyBgFunc = function(ele){
178
+
179
+ var bgVal = ( String( $(ele).val() ) === "" ) ? "#ffffff" : "#ffffff";
180
+
181
+ $(ele).css('background-color', bgVal);
182
+
183
+ //$(ele).css('pargin-bottom', 40 + 'px');
184
+
185
+ };
186
+
187
+
188
+
189
+ var makeValidatingCls = function(idx){ //index + α のクラスを作る
190
+
191
+ var cls = 'validating' + idx.toString();
192
+
193
+ return cls;
194
+
195
+ };
196
+
197
+ var getValidatingCls = function(ele){
198
+
199
+ var cls = $(ele).attr('class').match(/(?:^|[ ])(validating[0-9]+)/);
200
+
201
+ cls = (typeof cls === 'object' && typeof cls[1] !== 'undefined') ? cls[1] : '';
202
+
203
+ return cls;
204
+
205
+ };
206
+
207
+ var errHiddenFunc = function(ele){
208
+
209
+ var $err = $(ele).next('.error');
210
+
211
+ if($err.length){
212
+
213
+ $err.css('display', 'none');
214
+
215
+ }
216
+
217
+ };
218
+
219
+ var rules = {}, messages = {}, errTimeouts = {};
220
+
221
+ var $inputs = $(".with-validate :input");
222
+
223
+ var imeOffTypes = ['email', 'tel'];
224
+
225
+ $inputs.each(function(idx){
226
+
227
+ $ipt = $(this);
228
+
229
+ var type = $ipt.attr('type');
230
+
231
+ if( $.inArray(type, imeOffTypes) > -1 ){
232
+
233
+ $ipt.css('ime-mode', 'disabled');
234
+
235
+ }
236
+
237
+ var name = $ipt.attr('name');
238
+
239
+ var rule = {};
240
+
241
+ switch(type){
242
+
243
+ case 'tel':
244
+
245
+ rule = { phone: true, required: true };
246
+
247
+ message = {
248
+
249
+ phone: name + "は数字のみ11桁(-ハイフンなし)で入力して下さい。",
250
+
251
+ required: name + "を入力して下さい。",
252
+
253
+ };
254
+
255
+ break;
256
+
257
+ default:
258
+
259
+ rule = { required: true };
260
+
261
+ message = {
262
+
263
+ required: name + "を入力して下さい。",
264
+
265
+ };
266
+
267
+ break;
268
+
269
+ }
270
+
271
+ rules[name] = rule;
272
+
273
+ messages[name] = message;
274
+
275
+
276
+
277
+ var cls = makeValidatingCls(idx);
278
+
279
+ $ipt.addClass(cls);
280
+
281
+ errTimeouts[cls] = false;
282
+
283
+
284
+
285
+ emptyBgFunc($ipt.get(0));
286
+
287
+ $ipt.on('focusout', function(){ emptyBgFunc(this); });
288
+
289
+ $ipt.on('focus', function(){
290
+
291
+ errHiddenFunc(this);
292
+
293
+ var cls = getValidatingCls(this);
294
+
295
+ errTimeouts[cls] = false;
296
+
297
+
298
+
299
+ });
300
+
301
+ });
302
+
303
+
304
+
305
+ var validator = $("#mail-form").validate({
306
+
307
+ rules: rules,
308
+
309
+ messages: messages,
310
+
311
+ onfocusout: function(ele, event){
312
+
313
+ validator.element(ele);
314
+
315
+ var cls = getValidatingCls(ele);
316
+
317
+ var timer = setTimeout(function(){
318
+
319
+ if(errTimeouts[cls] === timer){
320
+
321
+ errHiddenFunc(ele);
322
+
323
+ }
324
+
325
+ }, 5000);
326
+
327
+ errTimeouts[cls] = timer;
328
+
329
+ },
330
+
331
+ });
332
+
333
+ });
334
+
335
+ })(jQuery);