I am working on a filter on a website using jQuery with JSON data. Yesterday this filter was working fine. It is now showing an error:
selectpicker is not a function
Can anyone please help me to sort out this issue?
JavaScript
x
78
78
1
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
2
<script type="text/javascript" src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.bundle.min.js"></script>
3
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.17/js/bootstrap-select.min.js"></script>
4
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script>
5
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.min.js"></script>
6
<script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.min.js"></script>
7
<script type="text/javascript" src="js/custom.js"></script>
8
9
<script>
10
var dataLoad = <?php echo json_encode( $filterData); ?>
11
console.log(dataLoad);
12
var body;
13
var model;
14
var variant;
15
16
$('#selectBody').empty().append('<option selected="selected" value="">Body</option>');
17
Object.entries(dataLoad).forEach(([key, value]) => {
18
// console.log(`${key} ${value}`);
19
$('#selectBody').append(`<option value="${key}">${key}</option>`);
20
});
21
22
function changeType(val) {
23
$('.selectpicker').selectpicker('refresh');
24
body = val.value
25
$('#selectModel').empty().append('<option selected="selected" value="">Model</option>');
26
Object.entries(dataLoad).forEach(([key, value]) => {
27
if (key === val.value) {
28
Object.entries(value).forEach(([k, v]) => {
29
$('#selectModel').append(`<option value="${k}">${k}</option>`);
30
});
31
}
32
});
33
$('.selectpicker').selectpicker('refresh');
34
}
35
36
function changeModel(val) {
37
model = val.value
38
$('#selectVariant').empty().append('<option selected="selected" value="">Trim</option>');
39
Object.entries(dataLoad).forEach(([key, value]) => {
40
if (body === key) {
41
Object.entries(value).forEach(([k, v]) => {
42
if (k === val.value) {
43
Object.entries(v).forEach(([kV, vV]) => {
44
$('#selectVariant').append(`<option value="${kV}">${kV}</option>`);
45
});
46
}
47
});
48
}
49
});
50
$('.selectpicker').selectpicker('refresh');
51
}
52
53
function changeVariant(val) {
54
model = val.value
55
console.log(model, "-------------")
56
$('#selectTransmission').empty().append('<option selected="selected" value="">Transmission</option>');
57
Object.entries(dataLoad).forEach(([key, value]) => {
58
if (body === key) {
59
Object.entries(value).forEach(([k, v]) => {
60
console.log(k, " -------:", model)
61
if (k === model) {
62
Object.entries(v).forEach(([kV, vV]) => {
63
if (kV === val.value) {
64
console.log(value, "--------------------")
65
Object.entries(vV).forEach(([kT, vT]) => {
66
$('#selectTransmission').append(`<option value="${kT}">${kT}</option>`);
67
});
68
}
69
});
70
}
71
});
72
}
73
});
74
75
$('.selectpicker').selectpicker('refresh');
76
}
77
</script>
78
Advertisement
Answer
You need to move bootstrap-select.min.js at the end of all jquery importation for exclude function rewriting.
I cant make a test but you can try this:
JavaScript
1
8
1
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
2
<script type="text/javascript" src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.bundle.min.js"></script>
3
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script>
4
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.min.js"></script>
5
<script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.min.js"></script>
6
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.17/js/bootstrap-select.min.js"></script>
7
<script type="text/javascript" src="js/custom.js"></script>
8