回答編集履歴

1

追記

2016/06/22 07:27

投稿

masaya_ohashi
masaya_ohashi

スコア9206

test CHANGED
@@ -23,3 +23,57 @@
23
23
  ```
24
24
 
25
25
  keypressイベントを登録するならENTERで次のフォーカスへ移させたい#list1だけでいいのではないでしょうか?
26
+
27
+
28
+
29
+ ### 追記
30
+
31
+ すみません、onchangeはテキストフィールドの場合、「中の要素が切り替わった上でフォーカスが移動した時」に発生するイベントだったので、onchangeで正しく動作するようです…混乱させて申し訳ないです。
32
+
33
+ で、フォーカス移動する処理をできるだけ簡潔にまとめてみました。ただし、jQuery-UIを使うので、jsの取り込みが必要です。
34
+
35
+ **!!!!!!!!!!
36
+
37
+ 要jQuery-UI
38
+
39
+ !!!!!!!!!!**
40
+
41
+ ```Javascript
42
+
43
+
44
+
45
+ $(function() {
46
+
47
+ var inputList = $("input[type='text']"); // テキストフィールド全て
48
+
49
+ var focusableList = $(":focusable"); // フォーカス可能な要素全て
50
+
51
+
52
+
53
+ // テキストフィールドでENTERキーを押されると次の要素へフォーカスを移動させる
54
+
55
+ inputList.keypress(function(e) {
56
+
57
+ // テキストフィールドでキー入力があるたびに発生する
58
+
59
+ var c = e.which ? e.which : e.keyCode;
60
+
61
+ if (c == 13) { // ENTERキー
62
+
63
+ var index = focusableList.index(this); // いまのテキストフィールドがフォーカス可能な要素の中で何番目か
64
+
65
+ if (index < focusableList.length - 1) {
66
+
67
+ // 次のフォーカス可能な要素へ移動する
68
+
69
+ $(focusableList[index + 1]).focus();
70
+
71
+ }
72
+
73
+ }
74
+
75
+ });
76
+
77
+ });
78
+
79
+ ```