회원가입시 라디오버튼 소스
본문
아이고 머리 아픕니다...
회원가입시 닉네임을 부서별 분류를 했습니다.
닉네임을 부서별로 분류했을때 라디오 버튼 사용법 부탁 드릴께요.
==============================
member/register_form.skin.php 에서 회원가입 소스를 몰라서 그렇습니다.
<input type=radio name='mb_nick' value="사무" <? if($mb[mb_nick] == "사무") echo "checked"; ?> required > 사무국
<input type=radio name='mb_nick' value="봉사" <? if($mb[mb_nick] == "봉사") echo "checked"; ?> required>봉사국
답변 6
제 예상이 맞다면
fregisterform_submit() js 함수에서
alert 창으로 닉네임을 입력해 주십시오 가 나와서 submit이 안되는 것 같은데요
여기 if 문이 true 이니까 무조건 reg_mb_nick_check() 을 호출하겠네요
가입일 때: f.w.value == "" // true
수정일 때: f.w.value == "u" // true
f.mb_nick.defaultValue // undefined
f.mb_nick.value // undefined
f.mb_nick.defaultValue != f.mb_nick.value // true
https://github.com/gnuboard/gnuboard5/blob/master/js/jquery.register_form.js#L44
그런데 radio 로 바꾸셨으니
$("#reg_mb_nick").val() 은 undefined 이고
중복검사하는 ajax 파일은 $_POST['reg_mb_nick'] 을 요구하겠지요?
https://github.com/gnuboard/gnuboard5/blob/master/bbs/ajax.mb_nick.php#L10
결론은
radio 버튼의 validate는 value로 할 수 없습니다
왜냐하면 f.mb_nick.length 가 여러개이기 때문이죠
그럼 어떻게 체크해야할까요?
radio selected length 를 비교해야하는데
pure js 로 체크하면 코드가 좀 길어지니
-영카트 예시: https://github.com/gnuboard/youngcart5/blob/master/shop/orderform.sub.php#L1287
jQuery 로 작성하자면
$(f).find('[name="mb_nick"]:checked').length
로 비교해야합니다
라디오버튼이니 닉네임 중복검사는 의미가 없을 걸로 보이고요
fregisterform_submit(f) 함수에서 닉네임 중복검사를 안한다고 해도
https://github.com/gnuboard/gnuboard5/blob/master/bbs/register_form_update.php#L82
중복검사를 패쓰해야겠네요
어디가 오류나서 그런건지 잘 모르겠지만..
밑에 부분이면 되지 않을까 싶은데...
<label for="mb_nick">사무국
<input type="radio" value="사무" <?php echo isset($member['mb_nick'])?'checked':'';?>>
</label>
<label for="mb_nick">봉사
<input type="radio" value="봉사" <?php echo isset($member['mb_nick'])?'checked':'';?>>
</label>
닉네임을 입력해 주십시오. 이렇게 나옵니다
required 를 빼세요
정규식 스크립트에서 input[name=mb_nick]으로 수정해주셔야될것같아요
아마 기존에 id를 비교하지 않을까싶네요
// 닉네임 검사
if ((f.w.value == "") || (f.w.value == "u" && f.mb_nick.defaultValue != f.mb_nick.value)) {
var msg = reg_mb_nick_check();
if (msg) {
alert(msg);
f.reg_mb_nick.select();
return false;
}
}
주석 처리 or 삭제