๋ชฉ์ฐจ
bootstrap selectpicker multiple js ์์ ์ ์ฒด์ ํ ํด์ ๋ณ๊ฒฝ.
์ด ์ ๋ชฉ์ ๋ญ๋ผ๊ณ ์ค๋ช ํด์ผ ํ ์ง ๋ชจ๋ฅด๊ฒ ๋ค.
์๋ฌดํผ ์์ง๋ ์ด๋ ๋ค.
๋ถํธ์คํธ๋ฉ4์ selectpicker multiple ์ต์ ์ ์ฌ์ฉํ ๋ ๋ํดํธ๋ก ์ฃผ์ด์ง๋ ๋ชจ๋์ ํ ๋ชจ๋ํด์ ํ ๊ธ ๋๋๊ฒ ํด๋ผ์ด์ธํธ ๋ง์์ ์๋ค์๋๋ณด๋ค.
๋ชจ๋ option์ด ์ ํ๋๋ฉด ๋ชจ๋ ํด์ ๋๋ ๊ฒ์ ๋น์ฐํ์ง๋ง ํ๋์ ์ต์ ๋ง ์ ํํด๋ ๋ชจ๋ํด์ ๋ก ๋ฐ๋๋ ๊ฒ์ด ํด๋ผ์ด์ธํธ๋ ์ดํด๊ฐ ์๋ ๋ชจ์์ด๋ค.
๊ทธ๋์ ํด๋ผ์ด์ธํธ๋ ์ ์ฒด๊ฐ ์๋ ์ต์ ์ ์ ํํ๋ฉด ์ ์ฒด์ต์ ์ ๋ณํ์ง ์๊ณ , ์ ์ฒด์ต์ ์ ์ ํํ๋ฉด ๋ชจ๋ ์ต์ ๋ ์ฒดํฌ๊ฐ ๋ ๊ฒ ์ฒ๋ผ ๋ณด์ด๊ฒ ํด ๋ฌ๋ผ๋ ๊ฒ์ด๋ค.
๊ธฐ๋ณธ์ ์ธ ์ ๋ ํธํผ์ปค์ ํ๊ทธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.
<select multiple data-actions-box="true" class="form-control selectpicker" data-width="135px"
name="ctrlSettingsg2" id="ctrlSettingsg2" title="๊ฒ์์กฐ๊ฑด">
<option>๊ทธ๋ฃน๋ช
</option>
<option>๊ทธ๋ฃน์ค๋ช
</option>
<option>๋ถ์๋ช
</option>
</select>
์๋ก ๋ณ๊ฒฝํด์ ์คํฌ๋ฆฝํธ๋ฅผ ์ง html๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ๋ค.
<select multiple class="form-control selectpicker" data-width="135px" name="ctrlSettingsg2"
id="ctrlSettingsg2" title="๊ฒ์์กฐ๊ฑด">
<option class="selAll">์ ์ฒด</option>
<option>๊ทธ๋ฃน๋ช
</option>
<option>๊ทธ๋ฃน์ค๋ช
</option>
<option>๋ถ์๋ช
</option>
</select>
๋ฌ๋ผ์ง ์ ์ data-actions-box="true" ์ด ๋น ์ง๊ณ , ์ ์ฒด๋ฅผ ํํํ๋ ์ต์ ์ด ์ถ๊ฐ๋๋ฉด์ class์ธ์์ฌ๋ก selAll์ด๋ผ๋ ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ค.
jquery์์๋ ์ด ์ ํ์๋ฅผ ํ์ ์ผ๋ก ํด์ ๋ค์๊ณผ ๊ฐ์ ์์ ์ ์ํํ๋ค.
//SelectAll2
$('.selectpicker').on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) {
if (clickedIndex == 0 && $(this).find('option:eq(0)').hasClass('selAll')) {
if (isSelected) {
$(this).selectpicker('selectAll');
} else {
$(this).selectpicker('deselectAll');
}
}
});
ํจ์ ์์ฒด๋ selectpicker์ ์ด๋ฒคํธ ์ต์ ์ ์ฌ์ฉํ๋ค.
data-actions-box๊ฐ ์ฌ์ฉ๋ ๊ฒฝ์ฐ์๋ ๋ง์น ์ฒดํฌ๋ฐ์ค๊ฐ ์๋ ๊ฒ์ฒ๋ผ ๋์ด ์์ด์ ์ ํํ๋๋ก ํ๋ค.
& .bs-actionsbox+.inner ul.dropdown-menu li {
& a:not(.selected) {
& span.check-mark {
display: inline-block;
margin-right: 5px;
&:after {
background: #fff url(/assets/images/bg/chkbox.png) left center no-repeat;
border: 0 none;
transform: rotate(0deg);
width: 18px;
height: 18px;
border-radius: 2px;
}
}
}
& a.selected {
& span.check-mark {
position: relative !important;
display: inline-block !important;
margin-right: 5px;
top: auto !important;
right: auto !important;
&:after {
background: #fff url(/assets/images/bg/chkbox_on.png) left center no-repeat;
border: 0 none;
transform: rotate(0deg);
width: 18px;
height: 18px;
border-radius: 2px;
}
}
}
}
๋๊ธ