Trong bài hôm nay mình sẽ chia sẽ cách làm live search trong array giống như hình bên dưới
-Tất nhiên là vue js
-filter array
-toLowerCase
-split
-push array
-splice array
keyup: để làm search live
click: để làm chọn item
Khi chúng ta gõ vào hộp search nó sẽ filter ra các name để đề xuất, và sau đó chúng ta chọn name nó sẽ lấy lên hộp search
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 |
<!doctype html> <html lang="en-US"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <title>Live search cho vue js</title> <style> body * { margin: 0; padding: 0; box-sizing: border-box; } ul.live-search-vue-js { max-height: 300px; overflow: auto; -webkit-box-shadow: 0 1px 3px 0 rgb(44 44 44 / 50%); -moz-box-shadow: 0 1px 3px 0 rgba(44,44,44,.5); box-shadow: 0 1px 3px 0 rgb(44 44 44 / 50%); top: 42px; width: 100%; border-radius: 5px; padding: 10px; position: absolute; } .live-search-vue-js-out { max-width: 400px; margin: 0 auto; } ul.live-search-vue-js>li { list-style: none; margin-bottom: 14px; cursor: pointer; } ul.live-search-vue-js>li>label>input { margin-right: 5px; } ul.live-search-vue-js>li>label { cursor: pointer; } li.searchSuggestlitung>input { border-radius: 3px; padding: 5px; border: 1px solid #333; } .form-live-search-vue-js { position: relative; } .searchKeyWord input { width: 100%; padding: 10px; border-radius: 5px; border: 1px solid #333; } </style> </head> <body> <div class="live-search-vue-js-out"> <div id="app"> <div class="form-live-search-vue-js"> <div class="searchKeyWord"> <input @keyup="searchSuggest" v-model="keyWord" type="text" placeholder="Search" autocomplete="off"/> </div> <ul class="live-search-vue-js"> <li v-for="(item, index) in searchData" :key="index"> <label :for="index"><input @click="selectedItem(index)" autocomplete="off" type="checkbox" v-bind:id="index" />{{item.name}}</label> </li> </ul> </div> </div> </div> <script type="module"> new Vue({ el: '#app', data: function () { return { nameSelected:[], keyWord:'', searchDataTemp:[ { name: "Nguyễn văn A", selected: false}, { name: "Trần văn C",selected: false}, { name: "Đào thị B", selected: false}, { name: "Lại thị C", selected: false}, { name: "Lại thị E", selected: false}, { name: "Lại thị D", selected: false}, { name: "Lại thị F", selected: false}, { name: "Lại thị A", selected: false}, { name: "Lại thị M", selected: false}, { name: "Lại thị P", selected: false}, { name: "Lại thị G", selected: false} ], searchData:[ { name: "Nguyễn văn A", selected: false}, { name: "Trần văn C",selected: false}, { name: "Đào thị B", selected: false}, { name: "Lại thị C", selected: false}, { name: "Lại thị E", selected: false}, { name: "Lại thị D", selected: false}, { name: "Lại thị F", selected: false}, { name: "Lại thị A", selected: false}, { name: "Lại thị M", selected: false}, { name: "Lại thị P", selected: false}, { name: "Lại thị G", selected: false} ] } }, methods:{ searchSuggest(e){ if(this.keyWord.length > 0){ this.searchData = this.searchDataTemp.filter((item)=>{ return this.keyWord.toLowerCase().split(' ').every(v => item.name.toLowerCase().includes(v)) }) }else{ this.searchData = this.searchDataTemp } //console.log(searchDataTemp) }, selectedItem(index){ if(!this.searchData[index].selected){ this.nameSelected.push(this.searchData[index].name) this.searchData[index].selected = !this.searchData[index].selected }else{ this.searchData[index].selected = !this.searchData[index].selected const indexTemp = this.nameSelected.findIndex(item => item.name === this.searchData[index].name) this.nameSelected.splice(indexTemp, 1) } this.keyWord = this.nameSelected.toString() } }, watch:{ }, created(){ } }) </script> </body> </html> |
ví dụ
1 2 3 4 |
const arr = [1,2,3,6,7]; console.log(arr.includes(3)); console.log(arr.includes('3')); console.log(arr.includes(8)); |
kết quả trả vềlần lượt là
true
false
false
vậy nên phải đung kiểu nó mới cho kết quả đúng (trường hợp 3 và ‘3’ là 2 kiểu khác nhau)
1 2 3 |
const string = 'fcwordrepss.net là blog chia sẽ'; console.log(string.includes('fcwordrepss')); console.log(string.includes('google')); |
Kết quả:
true
false
every sẽ lặp qua tất cả phần tử của array, nếu tất cả phần tử trong array thỏa mãn điều kiện thì return về true và ngược lại là false
ví dụ
1 2 3 4 5 6 7 8 9 |
const arr = [3,4,5,6]; const every = arr.every((item) => { return item < 6 }); const every2 = arr.every((item) => { return item <= 6 }); console.log(every); console.log(every2); |
Kết quả:
false
true
Mọi sự sao chép xin ghi rõ nguồn là fcwordpress.net
Chuyên trang về wordpress: hướng dẫn thiết kế theme, plugin, thủ thuật wordpress