테스트 사이트 - 개발 중인 베타 버전입니다

다중 여분필드 쉽게 만드는 함수 - 3. 멀티 체크박스

· 3년 전 · 3840 · 9

 

이 시리즈의 최종편입니다.

사용법은 1편 라디오버튼과 2편 셀렉트박스와 동일합니다.

1. https://sir.kr/g5_tip/18179

2. https://sir.kr/g5_tip/18199

 

write.skin.php 의 상단이나 아니면 write.head.skin.php 을 만들어서 아래의 함수를 입력합니다.

 

[code]

<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>
    ";
}
?>

[/code]

 

함수는 write.skin.php 에서 아래처럼 표현합니다.

[code]

<?php echo wr_checkbox("wr_4", "브라질,이탈리아,독일,우루과이,아르헨,프랑스", 1); ?>

[/code]

 

다음 중 역대 월드컵을 2회 이상 우승한 나라 중 유럽국가는?

31832606_1648786160.0406.jpg

 

기본 옵션은 이전의 게시글과 같습니다.

단 뷰페이지에서는 약간의 옵션이 더 필요합니다.

예를 들어 <?php echo $view['wr_4']; ?> // 이탈리아,독일,프랑스

위와 같은 단순표기 외에 1번과 2번과 3번을 각기 나열하고 싶다면...

 

[code]

<?php
$view_wr4 = explode(',', $view['wr_4']);
array_unshift($view_wr4, count($view_wr4));
$view_wr4[0] = $view_wr4[1] == '' ? 0 : $view_wr4[0];

?>

[/code]

 

위와 같이 여분필드를 배열에 담은 후 아래처럼 표현하면 되겠습니다.

 

<?php echo $view_wr4[1]; ?> // 이탈리아

<?php echo $view_wr4[2]; ?> // 독일

<?php echo $view_wr4[3]; ?> // 프랑스

 

<?php echo $view_wr4[0]; ?> 은 항목의 총숫자입니다. 예제에서는 3이 되겠지요.

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 9개

3년 전
좋은 팁 감사합니다.
3년 전
@들레아빠 감사합니다.
고맙습니다. 잘 쓰겠습니다^^
공개해주신 라디오버튼, 셀렉트박스, 멀티체크박스팁을 이용하면 스킨을 만들 때 매우 도움이 될것 같습니다.
라디오버튼 등은 좀 어려워서 여러가지를 선택하는 기능사용은 잘 이용하지 못했는데 비타주리님의 팁을 이용하면 쉽게 스킨에 적용할 수 있어 참 좋습니다.
세가지 팁을 write.head.skin.php에 다 넣어두고 필요한곳에서 라디오버튼, 셀렉트박스, 멀티체크박스를 이용할 수있어서 최고의 팁이라고 생각합니다.
다음에는 어떤 팁을 공개해주실지 기다려집니다.
환절기에 건강조심하세요^^
3년 전
@김철용
늘 격려 말씀 주셔서 감사합니다.
감사합니다.
3년 전
@트리플 감사합니다
3년 전
감사합니다.
3년 전
@크리스휘 늘 감사합니다.
2년 전
신기 합니다. 이해하기 쉽게 설명 해주셔서 감사합니다. ^^

게시글 목록

번호 제목
24318
24317
24315
24309
24294
24293
24277
24262
24260
24253
24251
24236
24233
24228
24226
24221
24214
24203
24201
24199
24196
24195
24194
24192
24191
24187
24185
24183
24172
24168