回答編集履歴

2

リンクタグ設置

2018/07/30 14:08

投稿

Spade
Spade

スコア115

test CHANGED
@@ -148,4 +148,4 @@
148
148
 
149
149
  ここで動作確認できますよ!
150
150
 
151
- https://jsfiddle.net/r4u06kb9/
151
+ [動作確認(jsfiddle)](https://jsfiddle.net/r4u06kb9/)

1

実装ソースの紹介

2018/07/30 14:08

投稿

Spade
Spade

スコア115

test CHANGED
@@ -1,25 +1,151 @@
1
- こんばんは!
1
+ > こんばんは!
2
+
3
+ >
4
+
5
+ > ソースを見たのですが、都道府県のリストを選ぶと、市のリストが変化するという認識ですよね??
6
+
7
+ > であれば、とりあえず取得すべきイベントは
8
+
9
+ > ```js
10
+
11
+ > $('.child').change
12
+
13
+ > ```
14
+
15
+ > ではなく
16
+
17
+ > ```js
18
+
19
+ > $('.parent').change
20
+
21
+ > ```
22
+
23
+ > ではないでしょうか??
24
+
25
+ > もしかして僕の認識間違いでしょうか・・・!?
2
26
 
3
27
 
4
28
 
5
- ソースを見たのです、都道府県のリストを選ぶ、市のリストが変化するとう認識ですよね??
29
+ 内容かくにんありがとうござました!
6
30
 
31
+
32
+
33
+ 簡単に実装してみたのですが、以下のソースはどうでしょうか?
34
+
7
- あればあえず取得すべきイベントは
35
+ (ざざっと書いたので、わかにくくてごめんなさい・・・)
36
+
37
+
8
38
 
9
39
  ```js
10
40
 
41
+ var $children = $('.parent'); //都道府県の要素を変数に入れます。
42
+
43
+ var options = $('.child').find("option");
44
+
45
+
46
+
47
+
48
+
11
- $('.child').change
49
+ $('.parent').change(function() {
50
+
51
+
52
+
53
+ //市セレクトの初期化
54
+
55
+ $.each(options,function(index,value){
56
+
57
+ if($(value).data("val") == "default"){
58
+
59
+ $(value).attr("selected","selected");
60
+
61
+ }
62
+
63
+ $(value).show();
64
+
65
+ });
66
+
67
+
68
+
69
+ //選択された地方のvalueを取得し変数に入れる
70
+
71
+ var val1 = $(this).val();
72
+
73
+
74
+
75
+ //市選択肢カウンタ
76
+
77
+ var option_count = 0;
78
+
79
+ //市選択肢が1つだったとき用の保存変数
80
+
81
+ var option_select = ""
82
+
83
+
84
+
85
+ //市選択肢の表示切り替え
86
+
87
+ $.each(options,function(index,value){
88
+
89
+ var city_option = $(value);
90
+
91
+ if(city_option.data("val") == "default"){
92
+
93
+ //初期値選択肢用(-- 選択2 --)
94
+
95
+ city_option.attr("selected","selected");
96
+
97
+ }
98
+
99
+ if(city_option.data("val") == val1){
100
+
101
+ //選択された県に当てはまる場合はカウントを増やし、option_selectに格納
102
+
103
+ option_count++;
104
+
105
+ option_select = city_option;
106
+
107
+ }else{
108
+
109
+ //選択された県にあてはまらない場合は、隠す
110
+
111
+ city_option.hide();
112
+
113
+ }
114
+
115
+ });
116
+
117
+
118
+
119
+ //市の選択肢が1つしかない場合は、自動的に選択された状態に変更
120
+
121
+ if(option_count == 1){
122
+
123
+ option_select.attr("selected","selected");
124
+
125
+ }
126
+
127
+
128
+
129
+ //市セレクトを選択可能に
130
+
131
+ $('.child').prop("disabled", false);
132
+
133
+
134
+
135
+ });
12
136
 
13
137
  ```
14
138
 
15
- ではなく
16
139
 
17
- ```js
18
140
 
19
- $('.parent').change
141
+ 選択肢の増やす減らすは`hide`と`show`で実装してみました。
20
142
 
21
- ```
143
+ DOMを消してしまうと、初期化が面倒なので・・・
22
144
 
23
- ではないでしょうか??
24
145
 
146
+
25
- もしして僕の認識間違いでしょうか・・・!
147
+ でしょうか?
148
+
149
+ ここで動作確認できますよ!
150
+
151
+ https://jsfiddle.net/r4u06kb9/