다중 여분필드 쉽게 만드는 함수 - 3. 멀티 체크박스
작성자 정보
- 관리자 작성
- 작성일
본문
이 시리즈의 최종편입니나.
사용법은 1편 라디오버튼과 2편 셀렉트박스와 동일합니다.
1. https://sir.kr/g5_tip/18179
2. https://sir.kr/g5_tip/18199
write.skin.php 의 상단이나 아니면 write.head.skin.php 을 만들어서 아래의 함수를 입력합니다.
<style>
.wr-checkbox { margin-left:5px; margin-right:7px; }
</style>
<?php
function wr_checkbox($checkbox_wr, $checkbox_str, $checkbox_req) {
global $write;
return "
<script>
n = ".explode('_', $checkbox_wr)[1].";
document.write('<span id=wrCheckbox_' + n + ' onmouseover=n=' + n + '>');
this['checkbox_' + n] = ('".$checkbox_str."').split(',');
this['checkboxValue' + n] = '".$write[$checkbox_wr]."';
document.write('<input type=hidden id=wr_' + n + ' name=wr_' + n + ' value='' + this['checkboxValue' + n] + ''>');
for (this['name_' + n] of this['checkbox_' + n]) document.write('<input type=checkbox name=_' + n + ' value='' + this['name_' + n] + ''><span class=wr-checkbox>' + this['name_' + n] + '</span>');
document.getElementsByName('_' + n)[document.getElementsByName('_' + n).length - 1].style.paddingRight = '0px';
for (this['_' + n] of document.getElementsByName('_' + n)) {
for (this['split_' + n] of this['wr_' + n].value.split(',')) this['_' + n].checked += this['_' + n].value == this['split_' + n];
this['_' + n].onclick = function() {
window['wr_' + n].value = '';
for (this['_' + n] of document.getElementsByName('_' + n)) if (this['_' + n].checked) window['wr_' + n].value += this['_' + n].value + ',';
window['wr_' + n].value = window['wr_' + n].value.slice(0, -1);
}
}
this['checkboxReq_' + n] = ".$checkbox_req.";
this['wrCheckbox_' + n].onmouseout = function() {
if (window['checkboxReq_' + n] && window['wr_' + n].value == '') {
document.getElementsByName('_' + n)[0].checked = 1;
document.getElementsByName('_' + n)[0].onclick();
}
}
this['wrCheckbox_' + n].onmouseout();
document.write('</span>');
</script>
";
}
?>
함수는 write.skin.php 에서 아래처럼 표현합니다.
<?php echo wr_checkbox("wr_4", "브라질,이탈리아,독일,우루과이,아르헨,프랑스", 1); ?>
Copy
다음 중 역대 월드컵을 2회 이상 우승한 나라 중 유럽국가는?

기본 옵션은 이전의 게시글과 같습니다.
단 뷰페이지에서는 약간의 옵션이 더 필요합니다.
예를 들어 <?php echo $view['wr_4']; ?> // 이탈리아,독일,프랑스
위와 같은 단순표기 외에 1번과 2번과 3번을 각기 나열하고 싶다면...
<?php
$view_wr4 = explode(',', $view['wr_4']);
array_unshift($view_wr4, count($view_wr4));
$view_wr4[0] = $view_wr4[1] == '' ? 0 : $view_wr4[0];
?>
위와 같이 여분필드를 배열에 담은 후 아래처럼 표현하면 되겠습니다.
<?php echo $view_wr4[1]; ?> // 이탈리아
<?php echo $view_wr4[2]; ?> // 독일
<?php echo $view_wr4[3]; ?> // 프랑스
<?php echo $view_wr4[0]; ?> 은 항목의 총숫자입니다. 예제에서는 3이 되겠지요.
관련자료
-
링크
-
이전
-
다음
댓글 0개
등록된 댓글이 없습니다.