teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

sample

2017/07/14 06:23

投稿

yambejp
yambejp

スコア117877

answer CHANGED
@@ -5,4 +5,55 @@
5
5
  要素数が0ならdisable、セレクトボックスタグでうけとっているなら、
6
6
  デフォルト値を持っている前提でoptionの数が1ならdisabled
7
7
 
8
- ということでどうでしょうか?
8
+ ということでどうでしょうか?
9
+ # sample
10
+ 一応ざっくり書いてみました
11
+ ajaxで呼び込む場合、タイミング調整がいるかと思いますが流れ的にこんな感じです。
12
+ - 初期状態で選べるのはLLのみ
13
+ - LLを選択するとLが選べる、同様にL→M、M→S、S→SS
14
+ - 上位の選択肢を--にすると下位の選択肢も--になり、disabledに戻る
15
+ - なにかを選んだとして下位の選択肢が1つもなければdisabledのまま
16
+ (今回ではSがなにもないのでMを選択してもSはdisabled)
17
+
18
+ ```javascript
19
+ $(function(){
20
+ $('.a').on('change',function(){
21
+ var v=$(this).val();
22
+ if(v==""){
23
+ $(this).nextAll('.a').prop({'disabled':true,"selectedIndex":0});
24
+ }else{
25
+ var flg=$(this).next('.a').children('option').length<=1;
26
+ $(this).next('.a').prop('disabled',flg);
27
+ }
28
+ }).trigger('change');
29
+ });
30
+ ```
31
+
32
+ ```HTML
33
+ <form>
34
+ <select class="a" name="LL">
35
+ <option value="">--</option>
36
+ <option value="a">a</option>
37
+ <option value="b">b</option>
38
+ <option value="c">c</option>
39
+ </select>
40
+ <select class="a" name="L">
41
+ <option value="">--</option>
42
+ <option value="a">a</option>
43
+ <option value="b">b</option>
44
+ <option value="c">c</option>
45
+ </select>
46
+ <select class="a" name="M">
47
+ <option value="">--</option>
48
+ <option value="a">a</option>
49
+ <option value="b">b</option>
50
+ <option value="c">c</option>
51
+ </select>
52
+ <select class="a" name="S">
53
+ <option value="">--</option>
54
+ </select>
55
+ <select class="a" name="SS">
56
+ <option value="">--</option>
57
+ </select>
58
+ </form>
59
+ ```