반응형
사이트를 만들다 보면 동의서에 대한 동의/미동의 기능을 구현할 경우가 종종있습니다.
제이쿼리를 통해 제가 알고 있는 두가지 방법을 공유해드리니 도움되셨으면 좋겠습니다.
첫번째는 한개 항목의 라디오 버튼 / 두번째는 다중 항목의 라디오 버튼의 정리 내용 입니다.
전체동의버튼 기능도 추가하였습니다.
첫번째!
한개의 항목에 대한 라디오버튼 처리입니다.
아래 화면과 같이 하나의 라디오 버튼을 가지고 동의/미동의 기능 구현 입니다.
요약하자면
- 함수를 부르는 onclick 값에 obj값을 넣어서
- obj값이 Y 또는 N 일때 if문을 통해 값을 구하는 것입니다.
- Y일 경우 check가 되어 있다면 form문의 action 주소로 넘어갑니다.
최종 완료 화면입니다.
JSP
1
2
3
4
5
6
7
8
9
10
|
<div class="tbox">
<ul>
<li>내용내용내용</li>
</ul>
</div>
<input type="radio" name="agreeBtn" id="agreeBtn" value="Y" class="radio" /><span class="ml_10">상기 사항을 준수할 것을 서약합니다.</span>
<div class="w_btn">
<a href="#" class="blue_btn" onclick="fnConfirm('Y');"><span>다음 단계로</span></a>
<a href="#" class="gray_btn" onclick="fnConfirm('N');"><span>동의하지 않습니다.</span></a>
</div>
|
cs |
JQUERY
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
function fnConfirm(obj) {
if(obj == 'Y') {
if($("#agreeBtn").is(":checked")) {
$("#agreeForm").submit();
} else {
alert("상기사항을 확인후 준수 서약에 동의가 필요합니다.");
return false;
}
} else {
if(confirm("미동의시 서비스 이용이 불가능합니다. 메인화면으로 이동하시겠습니까?")) {
location.href="${path}/";
}
return false;
}
}
|
cs |
두번째!
다중 항목에 대한 라디오버튼 처리 및 전체동의 부분입니다.
두번째는 for문을 통한 기능 구현입니다.
- 변수 radios에 radio값 Y일 적용하고 for문으로 돌면서 Y가 체크가 되어 있지 않으면 경고 메시지메 뜨고,
- 아니면 form action주소로 넘어가도록 설정해 보았습니다.
JSP
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
|
<div id="cont">
<form name="inputForm" method="post" onsubmit="return _onSubmit();" action="${path}/account/agree_action.do" >
<div class="chk-wrap right">
<input type="radio" name="agreeBtn1" id="agreeBtn1" class="vcen1" value="Y" /> <label for="agreeBtn1" class="f17 b">동의함</label>
<input type="radio" name="agreeBtn1" id="agreeBtn2" class="vcen2" value="N" /> <label for="agreeBtn1" class="f17 b">동의안함</label>
</div>
<div class="chk-wrap right">
<input type="radio" name="agreeBtn2" id="agreeBtn3" class="vcen3" value="Y" /> <label for="agreeBtn2" class="f17 b">동의함</label>
<input type="radio" name="agreeBtn2" id="agreeBtn4" class="vcen4" value="N" /> <label for="agreeBtn2" class="f17 b">동의안함</label>
</div>
<div class="chk-wrap">
<input type="radio" name="agreeBtn3" id="agreeBtn5" class="vcen5" value="Y" /> <label for="agreeBtn3" class="f17 b">동의함</label>
<input type="radio" name="agreeBtn3" id="agreeBtn6" class="vcen6" value="N" /> <label for="agreeBtn3" class="f17 b">동의안함</label>
</div>
<div class="chk-wrap t_c">
<input type="radio" name="agree_all" id="agree_all" class="vcen7" onclick="allcheck('Y')" value="" style="width:20px; height:20px" /> <label for="agree_all" class="f20 b">전체 동의 (모든 약관을 확인하고 전체 동의합니다)</label>
</div>
<div class="t_c mt_30">
<input type="submit" class="btn blue border-radius" value="확인"/>
<a href="${path }/" class="btn black border-radius"><span>취소</span></a>
</form>
</div>
|
cs |
라디오 버튼의 특성상 name값은 똑같이 해줘야 중복체크가 되지 않습니다.
JQUERY
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
|
function _onSubmit(){
var radios = $(":radio[value='Y']");
for(var i = 0; i < radios.length; i++) {
var $this = $(radios[i]);
if(!$this.is(":checked")) {
alert('약관에 동의하지 않을 경우 가입할 수 없습니다.');
$this.focus();
return false;
}
}
return true;
}
// 전체동의 체크시 동의만 체크, 해제시 전체 해제
function allcheck(val){
var agree_all = val;
if(agree_all == 'Y'){
$("input:radio[id='agreeBtn1']").prop("checked",true);
$("input:radio[id='agreeBtn3']").prop("checked",true);
$("input:radio[id='agreeBtn5']").prop("checked",true);
$("input:radio[id='agreeBtn2']").prop("checked",false);
$("input:radio[id='agreeBtn4']").prop("checked",false);
$("input:radio[id='agreeBtn6']").prop("checked",false);
}else{
$("input:radio[id='agreeBtn1']").prop("checked",false);
$("input:radio[id='agreeBtn3']").prop("checked",false);
$("input:radio[id='agreeBtn5']").prop("checked",false);
$("input:radio[id='agreeBtn2']").prop("checked",false);
$("input:radio[id='agreeBtn4']").prop("checked",false);
$("input:radio[id='agreeBtn6']").prop("checked",false);
}
}
|
cs |
전체동의 부분은 아이디를 구분지어 prop 메서드를 통해 설정합니다.
반응형
'JAVASCRIPT & JQUERY' 카테고리의 다른 글
체크박스(checkbox) 클릭 시, 활성화/비활성화 방법 (0) | 2020.10.02 |
---|---|
[JSP] 다음 우편번호 서비스 적용 방법 (0) | 2020.10.02 |
Select문으로 일정한 시간 설정 방법 (0) | 2020.10.02 |
여러 개의 Select 값을 하나의 컬럼으로 합치는 방법 (0) | 2020.09.29 |
[JSTL] 연락처 나누는 방법 (0) | 2020.09.19 |
댓글