datepicker, onclick 이벤트시에 한번에 뜨게 하기

by 조쉬 posted Mar 26, 2021
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

jquery ui에 datepicker는 보통

<script>
 $(function() {
  $( "#datepicker" ).datepicker();
 });
</script>
<input type="text" id="datepicker" >

이런식으로 쓰인다.
하지만 이럴경우 datepicker를 다른 inpubox에 쓸때마다 해당 input id별로 datepicker를 선언해줘야 한다. 그래서 이걸 아래와 같이 함수로 만들어 어디서든지 쓸수 있게 해주면 된다.

<script>
function f_datepicker(obj) {
 $( obj ).datepicker();
}
</script>
<input type="text" id="datepicker" onclick="javascript:f_datepicker(this);"> 

위와 같이 써주면 된다. 하지만.. 이럴경우 해당 inputbox를 두번째 클릭할때부터 달력이 뜬다. 이것을 한번에 뜨게 하기 위해서 여러곳을 뒤져본 결과, 어떤 곳에서는 datepicker를 임의로 만들어놓은 다른 오브젝트에서 실행시키고, 자신이 원하는 오브젝트로 해당 결과를 뿌려주는 방법을 사용하기도 하고, 어쨌든 2번째부터는 제대로 실행되니 잔머리 비슷한 방식으로

<input type="text" id="datepicker" onfocus="javascript:f_datepicker(this);" onclick="javascript:f_datepicker(this);">

이렇게 해당함수를 의도적으로 2번 실행시키는 방식으로(이 방법을 쓴사람의 잔머리는 참 감탄스럽던..) 하더라..
하지만 아래와 같이 하면 한번에 해결된다. 의외로 간단하다.

<script>
function f_datepicker(obj) {
 $( obj ).datepicker().datepicker("show");
}
</script>
<input type="text" id="datepicker" onclick="javascript:f_datepicker(this);"> 

datepicker("show") 를 붙여주면 된다. 다른 method 들도 더 있다. 자세한 사항은 아래의 링크에 가면 자세히.. 나와있다.

http://jqueryui.com/demos/datepicker/

역시 메뉴얼이란건 꼼꼼히 잘.. 읽어봐야 하는것이다. 괜히 조금 빨리 할려고 검색하다가 오히려.. 시간만 더 오래 걸리고 결국 원점으로.. .ㅡ/.ㅡ;