스킨에서 .. 사각체크박스와 라디오버튼 체크박스를 함께 사용할수 있는 스크립터 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

스킨에서 .. 사각체크박스와 라디오버튼 체크박스를 함께 사용할수 있는 스크립터 정보

질문 스킨에서 .. 사각체크박스와 라디오버튼 체크박스를 함께 사용할수 있는 스크립터

본문

스킨하나 작업하면서..이방법 저방법 다 사용해 보다가 결국 안되서 방향을 바꾸었습니다.

스크립터에 능한 고수분에게 도움을 요청합니다.



 <table>
<tr><td width=100>
<input type=checkbox name=notice value="1" <?=$notice_checked?>> // 체크박스
</td></tr>

<tr><td>
<input type=radio name='wr_1' value='1'  <? if($write[wr_1] == "1")  echo "checked"; ?>> //wr_1 라디오체크버튼
</td></tr>

<tr><td>
<input type=radio name='wr_1' value='2'  <? if($write[wr_1] == "2") echo "checked"; ?>> //wr_1 라디오체크버튼
</td></tr>

<tr><td>
<input type=radio name='wr_1' value='3'  <? if($write[wr_1] == "3") echo "checked"; ?>> //wr_1 라디오체크버튼
</td></tr>

</table>


write.skin.php에 사용된 것인데, 위에서 보듯이..input 타입의 구조가
하나는 '사각 체크박스'(공지사항) 이고 나머지 세개는 wr_1 여유필드를 이용한 '라디오 체크버튼'입니다.


위 4개중 반드시 한개의 값만 선택되록 해서 값이 넘어가게(저장) 하고 싶습니다.
딴건 차치하고...반드시 한개만 선택되도록 javascript를 구현해야 할거 같은데 어떤식으로 만들어야 할지요.
(아니면 다른 방법으로 체크할수 있는 방법이 있다면 그것도 괜찮습니다.)

-------------------------------------------------------------------------------------------------------------------------------------
- '사각체크버튼(공지)'선택후, '라디오 버튼중 하나'를 선택하면 중복이 되니까 안되도록 해야합니다.
- '라디오버튼중 하나'를 선택후, '사각체크버튼(공지)'을 선택하면 이것도 중복이 되니까 안되도록 해야 합니다.
-------------------------------------------------------------------------------------------------------------------------------------

체크박스 자체에 스크립터가 적용되어도 상관없고
write.skin.php 아래에 '확인'버튼을 눌렀을때 해당부분을 체크해서 중복체크이면 안되도록 만들어도 됩니다.

문제는 라디오 체크버튼의 경우, 한번 체크하면 빼낼수가 없는게 문제이네요.

부탁드립니다.

댓글 전체

g6man 님..............정말..........정말.....................감사합니다.
한번도 짜증안내시고..성의를 보여주신거...가슴깊이 감사드리겠습니다.
저한테는 무척 중요한 문제였는데..........지난 일주일의 시간이 아깝지 않게 되었습니다..고맙습니다..꾸벅~
제가 테스트한 코드를 올려드립니다.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title> New Document </title>
</head>
<body>
<form action="./" name="f1">
<table>
<tr><td width=300>
<input type=checkbox name=notice value="1" onclick="chk(document.f1.notice)"> // 체크박스
</td></tr>

<tr><td>
<input type=radio name='wr_1' value='1' onclick="chk(document.f1.notice)"> //wr_1 라디오체크버튼
</td></tr>

<tr><td>
<input type=radio name='wr_1' value='2' onclick="chk(document.f1.notice)"> //wr_1 라디오체크버튼
</td></tr>

<tr><td>
<input type=radio name='wr_1' value='3' onclick="chk(document.f1.notice)"> //wr_1 라디오체크버튼
</td></tr>

</table>
</form>
<script type="text/javascript">
function chk()
{
var c = document.getElementsByName('notice')[0];
if (c.checked) {
var r = document.getElementsByName('wr_1');
for(var i=0; i<r.length; i++) {
r[i].checked = false;
r[i].disabled = false;
}
}
}
</script>
</body>
</html>
리플감사합니다......... 말씀하신거 처럼..

<table>
<tr><td width=100>
<input type=checkbox name=notice value="1" <?=$notice_checked?> onclick="chk(f.notice);> // 체크박스
</td></tr>

<tr><td>
<input type=radio name='wr_1' value='1'  <? if($write[wr_1] == "1")  echo "checked"; ?> onclick="chk(f.notice);> //wr_1 라디오체크버튼
</td></tr>

<tr><td>
<input type=radio name='wr_1' value='2'  <? if($write[wr_1] == "2") echo "checked"; ?> onclick="chk(f.notice);>  //wr_1 라디오체크버튼
</td></tr>

<tr><td>
<input type=radio name='wr_1' value='3'  <? if($write[wr_1] == "3") echo "checked"; ?> onclick="chk(f.notice);> //wr_1 라디오체크버튼
</td></tr>

</table>


아래쪽에 아래 스크립터 추가

<script type="text/javascript">
function chk(c)
{
if (c.checked) {
var r = document.getElementsByName('wr_1');
for(var i=0; i<r.length; i++)
r[i].checked = false;
}
}
</script>

이렇게 했습니다.....스크립터 에러가 잠깐 비치는듯 하다가, 두개의 버튼이 동시에 다 넘어가버립니다.
두개다 같은 현상이네요.

체크박스 두개의 값중 하나를 선택해서 넘기는게 아니라, 둘중에 하나만 선택되도록 경고창을 띄워줘야하고
라디오폼에 체크되어있다면 해제를 시켜줄수 있어야 할거 같습니다.


...............음................
그냥 화면을 리프레쉬 시켜 버린다면...??
onclick="chk(f.notice);" 4군데에 넣어주세요....

<script type="text/javascript">
function chk(c)
{
//var c = document.getElementsByName('notice')[0];
if (c.checked) {
var r = document.getElementsByName('wr_1');
for(var i=0; i<r.length; i++)
r[i].checked = false;
}
}
</script>

또는 <input type=checkbox id=notice name=notice value="1" <?=$notice_checked?>>
아이디를 주고
var c = document.getElementById('notice');
<script type="text/javascript">
function chk()
{
var c = document.getElementsByName('notice')[0];
if (c.checked) {
var r = document.getElementsByName('wr_1');
for(var i=0; i<r.length; i++)
r[i].checked = false;
}
}
</script>

자바스크립트를 잘 못다루다 보니 코드가 썩 깔끔하지 않네요...
현재 사용된 스크립터는 아래와 같습니다...

if ($w = "u") {

  if ((f.notice.checked == true) && (f.wr_1[0].checked || f.wr_1[1].checked || f.wr_1[2].checked)) {
  alert('\"게시물형태\"옵션은 하나만 선택하실수 있습니다.');
  return;
  }

}


이건 그냥 중복체크되어있는 경우에 경고창만 뜨는데,

라디오버튼 선택후, 체크박스를 또 선택(중복으로 선택)한경우........
1. 위 상태에서 '라디오체크값'을 선택하고 싶을 경우에는 물론 '체크박스'는 체크를 다시한번 선택해서 없앨수 있으니까
    상관이 없는데..
2. 위 상태에서 '체크박스'값만 사용하고자 할경우  '라디오버튼'의 체크값을 없애야 하는데 그러지를 못합니다.
전체 66,558 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT