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

回答編集履歴

1

コメントを受け追記

2019/03/19 08:54

投稿

moredeep
moredeep

スコア1507

answer CHANGED
@@ -17,9 +17,42 @@
17
17
  $('.txb').on('focus', function() { // Focusがあった時に
18
18
  $(this).on('blur', function() { // Blurイベントハンドラを追加
19
19
  $(this).off('blur'); // 一度でoffする
20
- limitCheck(); //
20
+ limitCheck();
21
21
  });
22
22
  });
23
23
  ```
24
24
 
25
- 上記をそのままだと無駄な処理が多いので、「各TextBoxの判定処理だけを抜き出し、submitのclickではチェックとblur発火だけを行う」等の修正を行わないとダサいです。
25
+ 上記をそのままだと無駄な処理が多いので、「各TextBoxの判定処理だけを抜き出し、submitのclickではチェックとblur発火だけを行う」等の修正を行わないとダサいです。
26
+
27
+ ```
28
+ // とりあえずの対応その2
29
+
30
+ var hasBlurHandler = false;// グローバルに定義
31
+
32
+ ...
33
+
34
+ if (flg !== 0) {
35
+ if (event.type === 'blur') {
36
+ alert(msg);
37
+ } else {
38
+ //$(checkTgt).off('blur'); 削除
39
+ event.preventDefault();
40
+ if(hasBlurHandler) { // ここ追加
41
+ $(checkTgt).blur();
42
+ } else {
43
+ alert(msg);
44
+ }
45
+ }
46
+ }
47
+
48
+ ...
49
+
50
+ $('.txb').on('focus', function() { // Focusがあった時に
51
+ $(this).on('blur', function() { // Blurイベントハンドラを追加
52
+ $(this).off('blur'); // 一度でoffする
53
+ hasBlurHandler = false; // 追加
54
+ limitCheck();
55
+ });
56
+ hasBlurHandler = true; // 追加
57
+ });
58
+ ```