어드민 템플릿이나 백오피스 구현 시 용이한 js 플러그인이다.
예제 테스트
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="../css/multi-select.css">
<form id="frm" method="GET">
<h1>Pre-selected-options</h1>
<select id="brand" name="brand" multiple="multiple">
<option value="1" selected>1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4" selected>4</option>
<option value="100">100</option>
</select>
<button type="submit">ok</button>
</form>
<?
var_dump($_REQUEST['brands']);
?>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha/js/bootstrap.min.js"></script>
<script src="../js/jquery.multi-select.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#brand').multiSelect();
})
</script>
<select> 엘리먼트 네임을 배열 형태로 지정하고 서버에서도 배열로 받아 처리하면 된다.
위 페이지를 확인해 보면 아래와 같다(ok 버튼 클릭 시).
JAVASCRIPT로 데이터 처리
배열로 넘기지 않고, javascript 로 처리하려면 아래 참고.
(프론트엔드, 퍼블리싱 과정에서 이 방법을 선택해야 할 수도 있음)
미리 선택된 값(1, 4)을 배열에 담는다.
var arr = [];
$('#brand option:selected').each(function() {
arr.push( $(this).val() );
});
ok 버튼을 클릭했을 때 값을 넘긴다.
$('#frm').on('submit', function () {
$(this).append('<input type="hidden" name="brands" value="' + arr + '">');
})
값을 선택하거나 해제하는 경우, 배열에도 동일하게 처리한다.
메소드는 afterSelect, afterDeselect 이다.
$('#brand').multiSelect({
afterSelect: function(values){
arr.push( values );
},
afterDeselect: function(values){
for (let i = 0; i < arr.length; i++) {
if (arr[i].toString() == values) {
arr.splice(i, 1);
i--;
}
}
}
});
완성된 코드.
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="../css/multi-select.css">
<form id="frm" method="GET" style="margin-left: 50px;">
<h1>Pre-selected-options</h1>
<select id="brand" multiple="multiple">
<option value="1" selected>1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4" selected>4</option>
<option value="100">100</option>
</select>
<button type="submit">ok</button>
</form>
<?
echo $_REQUEST['brands'];
?>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha/js/bootstrap.min.js"></script>
<script src="../js/jquery.multi-select.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var arr = [];
$('#brand option:selected').each(function() {
arr.push( $(this).val() );
});
$('#brand').multiSelect({
afterSelect: function(values){
arr.push( values );
},
afterDeselect: function(values){
for (let i = 0; i < arr.length; i++) {
if (arr[i].toString() == values) {
arr.splice(i, 1);
i--;
}
}
}
});
$('#frm').on('submit', function () {
$(this).append('<input type="hidden" name="brands" value="' + arr + '">');
})
})
</script>
'코딩 > JavaScript & jQuery' 카테고리의 다른 글
javascript - 배열 교집합(중복), 차집합 요소 구하기 (0) | 2023.10.06 |
---|---|
[JAVASCRIPT] 날짜 계산 (어제, 내일, 일주일 전, 한달 전...) (0) | 2023.02.10 |
[JAVASCRIPT] 오브젝트 변수 다루는 법 정리 (0) | 2023.02.08 |
highlights.js 라인넘버 특정 코드(언어)에는 적용하지 않기 (0) | 2022.08.10 |
jQuery - fadeIn() (0) | 2022.07.26 |