I tried it like this but it didn’t work. How can I do that?
- Do not show category option unless Type is selected
- 1 time selection for both selectboxes (without removing multiple)
JavaScript
x
22
22
1
$("#clct, #cyc").select2({
2
//maximumSelectionLength: 1,
3
});
4
5
6
// Select step by step for homepage
7
$('#clct').on('change', function() {
8
var selected = $(this).val();
9
$("#cyc option").each(function(item){
10
console.log(selected) ;
11
var element = $(this) ;
12
console.log(element.data("tag")) ;
13
if (element.data("tag") != selected){
14
element.hide() ;
15
}else{
16
element.show();
17
}
18
}) ;
19
20
$("#cyc").val($("#cyc option:visible:first").val());
21
22
});
JavaScript
1
20
20
1
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet"/>
2
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
3
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>
4
<select name="bt" id="clct" class="clct input--style-1" data-placeholder="All Types" multiple>
5
<option value="1">TypeA</option>
6
<option value="2">TypeB</option>
7
<option value="3">TypeC</option>
8
<option value="4">TypeD</option>
9
</select>
10
11
<select name="yc" id="cyc" data-placeholder="Please select type" multiple>
12
<option value="1" data-tag="1">CategoryA</option>
13
<option value="2" data-tag="1">CategoryB</option>
14
<option value="3" data-tag="1">CategoryC</option>
15
<option value="4" data-tag="1">CategoryD</option>
16
<option value="5" data-tag="1">CategoryE</option>
17
<option value="0" data-tag="2">CategoryF</option>
18
<option value="0" data-tag="3">CategoryG</option>
19
<option value="0" data-tag="4">CategoryH</option>
20
</select>
Advertisement
Answer
JavaScript
1
31
31
1
var clct = $("#clct").select2({
2
maximumSelectionLength: 1
3
});
4
var cyc = $("#cyc").select2({
5
maximumSelectionLength: 1
6
});
7
8
var selectClone = cyc.clone();
9
cyc.find("option").remove();
10
11
12
$('#clct').on('change', function() {
13
var arr=$(this).val();
14
cyc.find("option").remove();
15
16
17
if (arr.indexOf("1")>-1){
18
let opts = selectClone.find('option[data-tag="1"]').clone();
19
cyc.append(opts);
20
}
21
if (arr.indexOf("2")>-1){
22
let opts = selectClone.find('option[data-tag="2"]').clone();
23
cyc.append(opts);
24
}
25
if (arr.indexOf("3")>-1){
26
let opts = selectClone.find('option[data-tag="3"]').clone();
27
cyc.append(opts);
28
}
29
30
31
});
JavaScript
1
20
20
1
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet"/>
2
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
3
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>
4
<select name="bt" id="clct" class="clct input--style-1" data-placeholder="All Types" multiple>
5
<option value="1">TypeA</option>
6
<option value="2">TypeB</option>
7
<option value="3">TypeC</option>
8
<option value="4">TypeD</option>
9
</select>
10
11
<select name="yc" id="cyc" data-placeholder="Please select type" multiple>
12
<option value="1" data-tag="1">CategoryA</option>
13
<option value="2" data-tag="1">CategoryB</option>
14
<option value="3" data-tag="1">CategoryC</option>
15
<option value="4" data-tag="1">CategoryD</option>
16
<option value="5" data-tag="1">CategoryE</option>
17
<option value="0" data-tag="2">CategoryF</option>
18
<option value="0" data-tag="3">CategoryG</option>
19
<option value="0" data-tag="4">CategoryH</option>
20
</select>