回答編集履歴

1

コメントを受け追記

2019/03/19 08:54

投稿

moredeep
moredeep

スコア1507

test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
  $(this).off('blur'); // 一度でoffする
38
38
 
39
- limitCheck(); //
39
+ limitCheck();
40
40
 
41
41
  });
42
42
 
@@ -47,3 +47,69 @@
47
47
 
48
48
 
49
49
  上記をそのままだと無駄な処理が多いので、「各TextBoxの判定処理だけを抜き出し、submitのclickではチェックとblur発火だけを行う」等の修正を行わないとダサいです。
50
+
51
+
52
+
53
+ ```
54
+
55
+ // とりあえずの対応その2
56
+
57
+
58
+
59
+ var hasBlurHandler = false;// グローバルに定義
60
+
61
+
62
+
63
+ ...
64
+
65
+
66
+
67
+ if (flg !== 0) {
68
+
69
+ if (event.type === 'blur') {
70
+
71
+ alert(msg);
72
+
73
+ } else {
74
+
75
+ //$(checkTgt).off('blur'); 削除
76
+
77
+ event.preventDefault();
78
+
79
+ if(hasBlurHandler) { // ここ追加
80
+
81
+ $(checkTgt).blur();
82
+
83
+ } else {
84
+
85
+ alert(msg);
86
+
87
+ }
88
+
89
+ }
90
+
91
+ }
92
+
93
+
94
+
95
+ ...
96
+
97
+
98
+
99
+ $('.txb').on('focus', function() { // Focusがあった時に
100
+
101
+ $(this).on('blur', function() { // Blurイベントハンドラを追加
102
+
103
+ $(this).off('blur'); // 一度でoffする
104
+
105
+ hasBlurHandler = false; // 追加
106
+
107
+ limitCheck();
108
+
109
+ });
110
+
111
+ hasBlurHandler = true; // 追加
112
+
113
+ });
114
+
115
+ ```