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

회원가입시 라디오버튼 소스 채택완료

초보탈출88 4년 전 조회 1,508

아이고 머리 아픕니다...

회원가입시 닉네임을 부서별 분류를 했습니다.

닉네임을 부서별로 분류했을때 라디오 버튼 사용법 부탁 드릴께요.

==============================

 

member/register_form.skin.php 에서 회원가입 소스를 몰라서 그렇습니다.

 

required > 사무국   required>봉사국

 

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

답변 6개

채택된 답변
+20 포인트
Big1
4년 전

제 예상이 맞다면 

fregisterform_submit() js 함수에서 

alert 창으로 닉네임을 입력해 주십시오 가 나와서 submit이 안되는 것 같은데요

 

https://github.com/gnuboard/gnuboard5/blob/master/theme/basic/skin/member/basic/register_form.skin.php#L401

여기 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

https://github.com/gnuboard/gnuboard5/blob/12132598b4e05a42bfe6103e5dfe1e9cb2ab9893/lib/register.lib.php#L52

 

결론은 

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

중복검사를 패쓰해야겠네요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

초보탈출88
4년 전
설명 감사 드립니다.
초보라 무슨말인지 잘 이해가 안갑니다.

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

4년 전

// 닉네임 검사         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 삭제

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

초보탈출88
4년 전
네,,감사합니다

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

정규식 스크립트에서 input[name=mb_nick]으로 수정해주셔야될것같아요

 

아마 기존에 id를 비교하지 않을까싶네요

로그인 후 평가할 수 있습니다

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

4년 전

required 를 빼세요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

초보탈출88
4년 전
해봤는데 안되네요

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

따로또같이

닉네임을 입력해 주십시오.  이렇게 나옵니다

로그인 후 평가할 수 있습니다

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

어디가 오류나서 그런건지 잘 모르겠지만..

밑에 부분이면 되지 않을까 싶은데...

</p>

<p><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></p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

초보탈출88
4년 전
"닉네임을 입력해 주십시오." 이렇게 나옵니다

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

답변을 작성하려면 로그인이 필요합니다.

로그인