HTML
xxxxxxxxxx
1
<div class="container">
2
3
<div class="row">
4
<div class="col-lg-6">
5
<!-- Default input -->
6
<label for="exampleForm2">Default input</label>
7
<input type="text" id="exampleForm2" class="form-control cascader">
8
9
<!--first--><!--
10
-->
11
<!--first-->
12
13
<div class="cascader-list main-list">
14
15
</div>
16
17
</div>
18
</div>
19
20
</div>
CSS
xxxxxxxxxx
1
.main-list
2
{
3
display: none;
4
position: absolute;
5
}
6
7
.sub-list
8
{
9
display: none;
10
position: absolute;
11
transform: translateX(100%);
12
right: 0;
13
top: 0;
14
}
15
16
.list-group-item
17
{
18
text-transform:capitalize;
19
margin: 0 2px;
20
cursor: pointer;
21
width: 150px;
22
}
23
24
#exampleForm2{
25
text-transform:capitalize;
26
}
27
28
JS
xxxxxxxxxx
1
var country = {
2
polska: {
3
lodzkie: ["Łódź", "Łowicz", "Sochaczew"],
4
mazowieckie: ["warszawa"],
5
slaskie: ["katowice", "chorzów"]
6
},
7
usa: {
8
alaska: ["city1", "city2"],
9
minessota: ["city1", "city2"]
10
}
11
};
12
13
14
$(document).ready(function () {
15
16
var $cascader = $(".cascader");
17
var $cascaderList = $(".cascader-list");
18
var $inputCascader = $("#exampleForm2");
19
20
21
22
for (var i in country) {
23
//console.log("Country: " + i);
24
var $ul = $('<ul class="list-group sub-list ">');
25
var $li = $('<li class="list-group-item list-group-item-action st">');
26
var $arrow = $('<i class="fas fa-angle-right float-right mt-1"></i>');
27
var $one = $(document.createDocumentFragment());
28
for (var j in country[i]) {
29
//console.log(i + ": " + j);
30
var $ul2 = $('<ul class="list-group sub-list ">');
31
var $li2 = $('<li class="list-group-item list-group-item-action nd">');
32
var $arrow2 = $('<i class="fas fa-angle-right float-right mt-1 "></i>');
33
var $two = $(document.createDocumentFragment());
34
for (var k = 0; k < country[i][j].length; k++) {
35
//console.log(j + ": " + country[i][j][k]);
36
37
var $li3 = $('<li class="list-group-item list-group-item-action rd">');
38
39
40
$two.append($li3.text(country[i][j][k]+" "));
41
}
42
43
$one.append($li2.text(j+" ").append($arrow2).append($ul2.append($two)));
44
45
}
46
47
$cascaderList.append($li.text(i+" ").append($arrow).append($ul.append($one)));
48
}
49
50
$cascader.on("click", function () {
51
$(".main-list").slideDown(200);
52
});
53
54
$(".list-group-item.st").on("click", function(){
55
$(".list-group-item.st").removeClass("active");
56
$(".list-group-item.st").find("> ul").hide(0);
57
$(this).addClass("active");
58
$(this).find("> ul").show(0);
59
});
60
61
$(".list-group-item.nd").on("click", function(){
62
$(".list-group-item.nd").removeClass("active");
63
$(".list-group-item.nd").find("> ul").hide(0);
64
$(this).addClass("active");
65
$(this).find("> ul").show(0);
66
});
67
68
$(".list-group-item.rd").on("click", function(){
69
$(".list-group-item.rd").removeClass("active");
70
$(this).addClass("active");
71
72
var one=$(this).text().trim();
73
var twoT, threeT;
74
twoT = $(this).parent().parent().text().split(" ");
75
var two = twoT[0].trim();
76
threeT = $(this).parent().parent().parent().parent().text().split(" ");
77
var three = threeT[0].trim();
78
79
$inputCascader.val(three+"/"+two+"/"+one);
80
81
$(".main-list").slideUp(200);
82
});
83
84
85
});
86
Console errors: 0