質問編集履歴

1

大まかな処理の流れを追記、「調べたこと」に新たに調べたことを追記

2017/12/04 10:13

投稿

whitia
whitia

スコア7

test CHANGED
File without changes
test CHANGED
@@ -28,69 +28,187 @@
28
28
 
29
29
  ```html
30
30
 
31
+ <div class="modal fade" id="modal">
32
+
33
+ <div class="modal-dialog">
34
+
35
+ <div class="modal-content">
36
+
37
+ <div class="modal-header"><!--省略--></div>
38
+
39
+ <div class="modal-body">
40
+
41
+
42
+
31
- <!--ダルのDIVなどは省略 -->
43
+ <!--入力した数字が入るフォ-->
44
+
45
+ <input type="number" id="input_num" />
46
+
47
+
48
+
49
+ </div>
50
+
51
+ <div class="modal-footer"><!--省略--></div>
52
+
53
+ </div>
54
+
55
+ </div>
56
+
57
+ </div>
58
+
59
+ ```
60
+
61
+
62
+
63
+ 下記「調べたこと」以外に調べ方、検索キーワードがありましたらご教示ください。
64
+
65
+ または、入力キーを自動セットするようなプラグインなどをご存知の方がいましたらご教示ください。
66
+
67
+
68
+
69
+ ###2017/12/4追記
70
+
71
+
72
+
73
+ 大まかにですが処理の流れは以下の通りです。
74
+
75
+
76
+
77
+ ```javascript
78
+
79
+ $(function() {
80
+
81
+ //モーダルの表示が完了したとき
82
+
83
+ $('#modal').on('shown.bs.modal', function(e) {
84
+
85
+ var target = document.getElementById('input_num');
86
+
87
+ target.value = target.value;
88
+
89
+ var len = target.value.length;
90
+
91
+ target.focus();
92
+
93
+ target.setSelectionRange(len, len);
94
+
95
+ });
96
+
97
+
98
+
99
+ //画面上でキー入力を行ったとき
100
+
101
+ $(document).keydown(function(e) {
102
+
103
+ //入力値によって分岐
104
+
105
+ //0~9の場合
106
+
107
+ dispModal(e);
108
+
109
+ });
110
+
111
+ });
112
+
113
+
114
+
115
+ function dispModal(e) {
116
+
117
+ //各種チェック処理、JavaBeans更新処理
118
+
119
+ //モーダル起動
120
+
121
+ $('#modal').modal('show');
122
+
123
+ }
124
+
125
+ ```
126
+
127
+
128
+
129
+ モーダル起動は`dispModal`内で行っているようです。
130
+
131
+ そのタイミングでモーダルの表示が完了した時の処理も自動的に走ります。
132
+
133
+ モーダルの表示が完了した時の処理は、何がしたいのかイマイチわからなかったので全文書いてみました。
134
+
135
+ 関係しているかは不明ですが、参考になれば幸いです。
136
+
137
+
138
+
139
+ #調べたこと
140
+
141
+
142
+
143
+ ##ID指定のセット
144
+
145
+
146
+
147
+ JavaScript、jQueryのID指定で要素を取得し値をセットしている箇所はありませんでした。
148
+
149
+ ※IDで調べました
150
+
151
+
152
+
153
+ ```javascript
154
+
155
+ //JavaScript
156
+
157
+ document.getElementById('input_num').value = keyCode;
158
+
159
+ //jQuery
160
+
161
+ $('#input_num').val(keyCode);
162
+
163
+ ```
164
+
165
+
166
+
167
+ ##フォーカス設定時イベント
168
+
169
+
170
+
171
+ モーダルの表示完了時に`<input>`にフォーカスをあてている箇所があり
172
+
173
+ この一行をコメントアウトしたところ数字が自動セットされなくなったので
174
+
175
+ フォーカスイベントが関係しているのは間違いなさそうなのですが
176
+
177
+ `focusin`などのキーワードで全検索してもそれらしい箇所はなさそうでした。
178
+
179
+
180
+
181
+ ```javascript
182
+
183
+ $('#モーダルのID').on('shown.bs.modal', function(event) {
184
+
185
+ $('#input_num').focus();
186
+
187
+ });
188
+
189
+ ```
190
+
191
+
192
+
193
+ ###2017/12/4追記
194
+
195
+
196
+
197
+ 以下のように`#any_input`を追加し、`#any_input`にフォーカスをあてるよう処理を変更すると
198
+
199
+ 入力した数字は`#any_input`にセットされました。
200
+
201
+ しかし、フォーカスのあたっている要素を取得する`document.activeElement`は使っていませんでした。
202
+
203
+
204
+
205
+ ```html
206
+
207
+ <!--入力した数字が入るフォーム-->
32
208
 
33
209
  <input type="number" id="input_num" />
34
210
 
35
- ```
36
-
37
-
38
-
39
- 下記「調べたこと」以外に調べ方、検索キーワードがありましたらご教示ください。
40
-
41
- または、入力キーを自動セットするようなプラグインなどをご存知の方がいましたらご教示ください。
42
-
43
-
44
-
45
- #調べたこと
46
-
47
-
48
-
49
- ##ID指定のセット
50
-
51
-
52
-
53
- JavaScript、jQueryのID指定で要素を取得し値をセットしている箇所はありませんでした。
54
-
55
- ※IDで調べました
56
-
57
-
58
-
59
- ```javascript
60
-
61
- //JavaScript
62
-
63
- document.getElementById('input_num').value = keyCode;
211
+ <input type="text" id="any_input" />
64
-
65
- //jQuery
66
-
67
- $('#input_num').val(keyCode);
68
-
69
- ```
70
-
71
-
72
-
73
- ##フォーカス設定時イベント
74
-
75
-
76
-
77
- モーダルの表示完了時に`<input>`にフォーカスをあてている箇所があり
78
-
79
- この一行をコメントアウトしたところ数字が自動セットされなくなったので
80
-
81
- フォーカスイベントが関係しているのは間違いなさそうなのですが
82
-
83
- `focusin`などのキーワードで全検索してもそれらしい箇所はなさそうでした。
84
-
85
-
86
-
87
- ```javascript
88
-
89
- $('#モーダルのID').on('shown.bs.modal', function(event) {
90
-
91
- $('#input_num').focus();
92
-
93
- });
94
212
 
95
213
  ```
96
214