생년월일/자바스크립트 > 그누4 스킨

그누4 스킨

스킨의 저작권은 해당 스킨 제작자님께 있으며, 그누보드의 저작권과 다를 수 있습니다.
스킨 다운로드시 좋아요와 감사의 코멘트를 남기시면 제작자에게 큰 힘이됩니다. ^^y
그누보드와 관련이 있지만 스킨과 빌더가 아니면 플러그인 게시판에 올려주세요.

생년월일/자바스크립트 정보

회원가입 생년월일/자바스크립트

첨부파일

calendar.zip (2.3K) 341회 다운로드 2010-04-07 09:11:05

본문

회원가입시 가입폼의 생년월 선택은
<a href="javascript:win_calendar('mb_birth', document.getElementById('mb_birth').value, '');">
이런식으로 ............ 팝업창으로 되어있어, 브라우저 설정이 팝업창이 차단 되어 있는 상태에서 마우스를 아무리 클릭해도 팝업창이 뜨지 않습니다 ;;

그래서 ... 수정하게 되었습니다 ^^;;

1. 먼저 calendar.js 파일 (utf8) 을 다운로드 하여 압축을 풀어 회원가입폼이 있는 스킨폴더에 카피 해 넣습니다.

    ex) 그누보드\skin\member\basic

2. 스킨폴더에 있는 register_form.skin.php 파일을 열어 상단에

1)
  <script>
    var member_skin_path = "<?=$member_skin_path?>";
    </script>
    라고 되어 있는 바로 아래에

    <script language="javascript" src="<?=$member_skin_path?>/calendar.js"></script>

        를 추가 합니다.

2)  그다음 생년월입력 input 폼을 찾아서

<input class=ed type=text id=mb_birth name='mb_birth' size=8 maxlength=8 minlength=8 required numeric itemname='생년월일' value='<?=$member[mb_birth]?>' readonly title='옆의 달력 아이콘을 클릭하여 날짜를 입력하세요.'>
                    <a href="javascript:win_calendar('mb_birth', document.getElementById('mb_birth').value, '');"><img src='<?=$member_skin_path?>/img/calendar.gif' border=0 align=absmiddle title='달력 - 날짜를 선택하세요'></a>


를 주석처리 혹은 삭제하고 ///////////////////////////

/////////////// 아래와 같이 수정합니다 ^,.^ ;;


<input class=ed type=text id=mb_birth name='mb_birth' size=8 maxlength=8 minlength=8 required numeric itemname='생년월일' value='<?=$member[mb_birth]?>' readonly onfocus="show_cele_date(this,'','',this)">
추천
8

댓글 전체

옆에 이미지를 클릭했을 때에도 나오게 하려면..

<a href="javascript:;"><img src='<?=$member_skin_path?>/img/calendar.gif' border="0" align="absmiddle" title='달력 - 날짜를 선택하세요' onclick="document.getElementById('mb_birth').focus();"></a>

이렇게 하면 됩니다. 이미지 클릭했을 때 입력컨트롤에 포커스를 주면 같은 일이 일어납니다.

잘 쓰고 있습니다. 감사^^
도끼목수님 감사합니다...멋지네요...추천꽝!!
혹시 1990년 5월 5일이 등록되어 있는 상태에서
폼을 클릭하면 오늘 날짜가 아니라 1990년 5월 5일자 달력이 나오게 할려면 어떻게 하면 될까요?
기존 달력폼에서는 그렇게 나오거든요...^^
기존에 입력 받은 날짜가 있는 달력을 표시하려면 다음과 같이 하시면 될 듯 합니다.

중요한 것은 기존의 변수를 넘겨받아서(파라메타 추가) 처리하는 것이겠죠?

우선, 자바스크립트 파일의 다음 함수를 이렇게 수정하세요..
(d_cur 변수가 넘겨받는 일자입니다.)


function show_cele_date(eP, d_start, d_end, t_object, d_cur)
{
window.cele_date.style.display="";
window.cele_date.style.zIndex=99
var s,cur_d;
var eT = eP.offsetTop;  
var eH = eP.offsetHeight+eT;  
var dH = window.cele_date.style.pixelHeight;  
var sT = document.body.scrollTop; 
var sL = document.body.scrollLeft;
event.cancelBubble=true;
window.cele_date.style.posLeft = event.clientX-event.offsetX+sL-5;  
window.cele_date.style.posTop = event.clientY-event.offsetY+eH+sT-5;
if (window.cele_date.style.posLeft+window.cele_date.clientWidth>document.body.clientWidth) window.cele_date.style.posLeft+=eP.offsetWidth-window.cele_date.clientWidth;

if (d_start!=""){
    if (d_start=="today"){
        date_start=new Date(today.getYear(),today.getMonth(),today.getDate());
    }else{
        s=d_start.split(separator);
        date_start=new Date(s[0],s[1]-1,s[2]);
    }
}else{
    date_start=new Date(1900,1,1);
}

if (d_end!=""){
    s=d_end.split(separator);
    date_end=new Date(s[0],s[1]-1,s[2]);
}else{
    date_end=new Date(3000,1,1);
}

g_object=t_object

// 넘겨받은 표시 달력 일자가 있으면..
if (d_cur) {
	s=d_cur.split(separator);
	cur_d=new Date(s[0],s[1]-1,s[2]);
} else {
	cur_d=new Date();
}
set_cele_date(cur_d.getYear(),cur_d.getMonth()+1);
window.cele_date.style.display="block";

window.cele_date.focus();

}


그 다음에는 입력 폼에서 다음과 같이 수정해 줍니다.
(함수호출 파라메타에 this.value 를 추가해 줍니다.^^)


<input type="text" id="input_item" name="input_item" size="10" value="<?=$변수명?>" onfocus="show_cele_date(this,'','',this, this.value)">
<a href="javascript:;"><img src='<?=$board_skin_path?>/img/calendar.gif' border=0 align=absmiddle title='달력 - 날짜를 선택하세요' onclick="document.getElementById('input_item').focus();"></a>


이렇게 하면 됩니다.

참, 디폴트로 separator가 없으니 "-"로 지정하시고, 날짜 넘기실 때 "0000-00-00" 형식으로 넘겨주면 이상없이 동작합니다.
토끼아빠님 감사합니다.^^
그런데, 초보라 [separator가 없으니 "-"로 지정하시고, 날짜 넘기실 때 "0000-00-00" 형식으로 넘겨주면 이상없이 동작합니다. ] 이 부분에서 막히네요.
데이터 형식이 20100407 형식으로 입력되고..다른 것들도 이 형식과 연동이 되거든요. - 없이 값을 넘겨야 하는데... 어찌할지를 모르겠네요...
현재 상태는 연도는 비어있고, 월은 1이 일은 아무것도 표시되지 않게 나옵니다.

죄송합니다..워낙 초보라 밥을 숟가락으로 떠 넣어주지 않으면 먹을 줄 몰라요...^^;;;
마이뮤즈님 같은 경우에는

제가 올린 소스 중에 다음 부분을 이렇게 고치세요..


// 넘겨받은 표시 달력 일자가 있으면.. 
if (d_cur) { 
   s=d_cur.split(separator);
   cur_d=new Date((s[0]+s[1]+s[2]+s[3]),(s[4]+s[5])-1,(s[6]+s[7]));
} else { 
  cur_d=new Date(); 
} 


날짜자료가 한 글자씩 배열에 들어가니까.. 배열을 더해서 표현하면 될 듯..^^
감사합니다. 토끼아빠님
쪽지를 드리자마자 답변을 받았네요..^^

방금 주신 소스로 대체했는데, 연, 월은 제대로 들어오네요.
다만, 일 부분은 블럭으로 처리되지 않습니다.
전체 186 |RSS
그누4 스킨 내용 검색

회원로그인

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