質問編集履歴

4

修正のため

2020/09/13 08:48

投稿

chapp
chapp

スコア233

test CHANGED
File without changes
test CHANGED
@@ -186,4 +186,4 @@
186
186
 
187
187
 
188
188
 
189
- また、子カテゴリのデータが存在する場合、PHPでテーブルからの子カテゴリの取得範囲を制限するも、親カテゴリを変えると、子カテゴリが表示されない状況となってしまいます。
189
+ これを防ごうと子カテゴリのデータが存在する場合、テーブルからの子カテゴリの取得範囲を制限するも、PHPで行っているため、親カテゴリを変えると、子カテゴリが表示されない状況となってしまいます。

3

修正のため

2020/09/13 08:48

投稿

chapp
chapp

スコア233

test CHANGED
File without changes
test CHANGED
@@ -183,3 +183,7 @@
183
183
 
184
184
 
185
185
  現状での不都合は、子カテゴリに「disabled」が設定されているため、子カテゴリのデータが選択されているときは「disabled」を外すことは出来るものの、親カテゴリと関連のない子データ、要は全てのデータが表示されてしまう状況です。
186
+
187
+
188
+
189
+ また、子カテゴリのデータが存在する場合、PHPでテーブルからの子カテゴリの取得範囲を制限するも、親カテゴリを変えると、子カテゴリが表示されない状況となってしまいます。

2

修正のため

2020/09/13 08:35

投稿

chapp
chapp

スコア233

test CHANGED
File without changes
test CHANGED
@@ -72,7 +72,7 @@
72
72
 
73
73
 
74
74
 
75
- <select class="children" name="s_cate" size="12" disabled>
75
+ <select class="children" name="s_cate" size="12" <?php echo $disabled; ?>>
76
76
 
77
77
  <option value = "">選択してください</option>
78
78
 

1

追記のため

2020/09/13 08:26

投稿

chapp
chapp

スコア233

test CHANGED
File without changes
test CHANGED
@@ -31,3 +31,155 @@
31
31
  お忙しいなか恐縮ですが、ご教示のほどお願い出来たら幸いです。
32
32
 
33
33
  よろしくお願いいたします。
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+ ■現在のコード
42
+
43
+ プルダウンデータはDBから取得しているので、以下はHTML出力した際のもので、親カテゴリの「リフォーム(室内)」、子カテゴリの「壁紙(クロス)張替え」を選択し、POSTしたときのHTMLです。
44
+
45
+
46
+
47
+ PHP、およびSQL(create table、inseart文)を張り付けるべきか悩みましたが、長くなるのでHTMLを記載した次第です。
48
+
49
+
50
+
51
+ ```
52
+
53
+
54
+
55
+ <select class="parent" name="m_cate" size="12">
56
+
57
+ <option value = "">選択してください</option>
58
+
59
+ <option value="1" class="py-1 border-top" selected>クリーニング</option>
60
+
61
+ <option value="2" class="py-1 border-top" >リフォーム(室内)</option>
62
+
63
+ <option value="3" class="py-1 border-top" >リフォーム(室外)</option>
64
+
65
+ <option value="4" class="py-1 border-top" >家電(設備)の取付け・修理</option>
66
+
67
+ <option value="5" class="py-1 border-top" >水道修理・メンテナンス</option>
68
+
69
+ </select>
70
+
71
+
72
+
73
+
74
+
75
+ <select class="children" name="s_cate" size="12" disabled>
76
+
77
+ <option value = "">選択してください</option>
78
+
79
+ <option value="1" data-val="1" class="py-1 border-top" >ハウスクリーニング</option>
80
+
81
+ <option value="2" data-val="1" class="py-1 border-top" >ルームクリーニング</option>
82
+
83
+ <option value="3" data-val="1" class="py-1 border-top" >エアコンクリーニング</option>
84
+
85
+ <option value="4" data-val="2" class="py-1 border-top" selected>壁紙(クロス)張替え</option>
86
+
87
+ <option value="5" data-val="2" class="py-1 border-top" >クッションフロア張替え</option>
88
+
89
+ <option value="6" data-val="2" class="py-1 border-top" >フローリング張替え</option>
90
+
91
+ <option value="7" data-val="3" class="py-1 border-top" >外壁塗装・コーキング防水工事</option>
92
+
93
+ <option value="8" data-val="3" class="py-1 border-top" >屋根塗装・防水工事</option>
94
+
95
+ <option value="9" data-val="3" class="py-1 border-top" >屋根・防水修理</option>
96
+
97
+ <option value="10" data-val="4" class="py-1 border-top" >エアコン取付け・修理</option>
98
+
99
+ <option value="11" data-val="4" class="py-1 border-top" >温水洗浄便座取付け</option>
100
+
101
+ <option value="12" data-val="4" class="py-1 border-top" >アンテナ取付け</option>
102
+
103
+ <option value="13" data-val="5" class="py-1 border-top" >貯水槽清掃</option>
104
+
105
+ <option value="14" data-val="5" class="py-1 border-top" >水道水漏れ修理</option>
106
+
107
+ <option value="15" data-val="5" class="py-1 border-top" >排水管洗浄</option>
108
+
109
+ </select>
110
+
111
+
112
+
113
+ <INPUT type="hidden" name="index">
114
+
115
+ <INPUT type="hidden" name="step1">
116
+
117
+ <button type="submit" class="btn btn-warning text-white pl-5 pr-5">Submit</button>
118
+
119
+ </form>
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+ <script>
128
+
129
+ <!--
130
+
131
+ var $children = $('.children');
132
+
133
+ var original = $children.html();
134
+
135
+
136
+
137
+ $('.parent').change(function() {
138
+
139
+
140
+
141
+ var val1 = $(this).val();
142
+
143
+
144
+
145
+ $children.html(original).find('option').each(function() {
146
+
147
+ var val2 = $(this).data('val');
148
+
149
+ if (val1 != val2) {
150
+
151
+ $(this).not(':first-child').remove();
152
+
153
+ }
154
+
155
+ });
156
+
157
+
158
+
159
+ if ($(this).val() == "") {
160
+
161
+ $children.attr('disabled', 'disabled');
162
+
163
+ } else {
164
+
165
+ $children.removeAttr('disabled');
166
+
167
+ }
168
+
169
+
170
+
171
+ });
172
+
173
+ -->
174
+
175
+ </script>
176
+
177
+
178
+
179
+
180
+
181
+ ```
182
+
183
+
184
+
185
+ 現状での不都合は、子カテゴリに「disabled」が設定されているため、子カテゴリのデータが選択されているときは「disabled」を外すことは出来るものの、親カテゴリと関連のない子データ、要は全てのデータが表示されてしまう状況です。