質問編集履歴

1

内容詳しく記入してます。わかる範囲でcodeも記入ずみです

2020/11/24 01:19

投稿

nobinomio
nobinomio

スコア43

test CHANGED
File without changes
test CHANGED
@@ -7,3 +7,125 @@
7
7
  こちらがやりたい事ができるプラグイン です。
8
8
 
9
9
  https://fit-jp.com/selectbox-jq/
10
+
11
+ やりたいこととして
12
+
13
+ 1 バス利用の有り、無しをselectboxで選択→有りの場合はバスルートとselectboxがあらわれる。無しの場合はバスルートのselectboxはあらわれない
14
+
15
+
16
+
17
+ 2バス利用有りを選択した場合に次のバスルートを選択→1ルートの場合は1ルートのバス停の書いてあるselectboxがあらわれる。2ルートの場合は2ルートのバス停の書いてあるselectboxがあらわれる
18
+
19
+ ↑↑↑
20
+
21
+ 2の部分は下記コードで作成してみたのですが、初めからバスルートと停留所2つのバスルートのselectboxがでたままになっています。
22
+
23
+
24
+
25
+ 現在jqueryなしで作成したのですが、selectboxを2つまではわかったのですが3つ4つに増やすやり方が
26
+
27
+ わからないのと、1つ目のselectboxを選択したら次のセレクトboxがでるみたいにしたいのですが
28
+
29
+ そのやり方がわからずプラグインを使用しようと思っておりました
30
+
31
+ 現在のコードは下記です
32
+
33
+ ```html
34
+
35
+ <select class="form-control" name="バスルート(バス希望の方のみ)">
36
+
37
+ <option value="" selected="selected">選択してください</option>
38
+
39
+ <option value="①ルート">①ルート</option>
40
+
41
+ <option value="②ルート">②ルート</option>
42
+
43
+ </select>
44
+
45
+
46
+
47
+ <select class="children" name="bar" disabled="">
48
+
49
+ <option value="" selected="selected">選択してください</option>
50
+
51
+ <option value="3丁目交差点先" data-val="①ルート">3丁目交差点先</option>
52
+
53
+ <option value="ポルシェ前" data-val="①ルート">ポルシェ前</option>
54
+
55
+ <option value="南郵便局前" data-val="①ルート">南郵便局前</option>
56
+
57
+ <option value="サミット前" data-val="②ルート">サミット前</option>
58
+
59
+ <option value="交差点手前" data-val="②ルート">交差点手前</option>
60
+
61
+ <option value="神社前" data-val="②ルート">神社前</option>
62
+
63
+ </select>
64
+
65
+ ```
66
+
67
+
68
+
69
+ ```javascript
70
+
71
+ <script>
72
+
73
+ var $children = $('.children'); //停留所の要素を変数に入れます。
74
+
75
+ var original = $children.html(); //後のイベントで、不要なoption要素を削除するため、オリジナルをとっておく
76
+
77
+
78
+
79
+ //地方側のselect要素が変更になるとイベントが発生
80
+
81
+ $('.form-control').change(function() {
82
+
83
+
84
+
85
+ //選択された方面のvalueを取得し変数に入れる
86
+
87
+ var val1 = $(this).val();
88
+
89
+
90
+
91
+ //削除された要素をもとに戻すため.html(original)を入れておく
92
+
93
+ $children.html(original).find('option').each(function() {
94
+
95
+ var val2 = $(this).data('val'); //data-valの値を取得
96
+
97
+
98
+
99
+ //valueと異なるdata-valを持つ要素を削除
100
+
101
+ if (val1 != val2) {
102
+
103
+ $(this).not(':first-child').remove();
104
+
105
+ }
106
+
107
+
108
+
109
+ });
110
+
111
+
112
+
113
+ //方面側のselect要素が未選択の場合、停留所をdisabledにする
114
+
115
+ if ($(this).val() == "") {
116
+
117
+ $children.attr('disabled', 'disabled');
118
+
119
+ } else {
120
+
121
+ $children.removeAttr('disabled');
122
+
123
+ }
124
+
125
+
126
+
127
+ });
128
+
129
+ </script>
130
+
131
+ ```