자바스크립트 도움부탁드립니다. ㅡㅡ;
2011.04.18 14:53
자바스크립트로 칼렌더를 만들었는데
버튼을 누르면 칼렌더가 나오고 해당 일자를 선택하면 칼렌더가 사라지도록 만들었습니다.
그런데 버튼을 눌러 칼렌더가 나온 상태에서 해당 일자를 선택하지 않고 그냥 바탕화면(body)를 클릭하면 칼렌더가 닫히도록 하려면 어떻게
해야 할까요?
body onclick 이벤트에 뭔가를 해보려고 하니 버튼 클릭 이벤트와 body 온클릭 이벤트가 같이 적용되더라구요 ㅜㅜ
혹시 아시면 도움 부탁드립니다.
코멘트 6
-
김강욱
04.18 15:27
-
김주식
04.18 16:19
소스 추가해 봅니다.
<script type="text/javascript">
function make1(obj)
{
var div;
div = document.createElement("div");
div.setAttribute("id", "wrap");
div.style.position = "absolute";
div.style.border = "solid 1px blue";
div.style.width = "200px";
div.style.height = "100px";
div.style.top = "10px";
div.style.left = "10px";document.body.appendChild(div);
}
</script><body onclick="alert('확인');">
<input type="text" id="txt1" />
<input type="button" id="btn1" value="확인1" onclick="make1('txt1')" /></body>
여기서 btn1 을 클릭하면 body에 onclick 이벤트도 같이 발생하는데
만약 버튼과 body 이벤트가 따로 동작하려면 어떻게 해야 할까요?
-
잘 이해했나 모르겠는데. 그냥 Div의 onBlur에 div를 닫도록 해주시면 될거 같은데요.
<div id="calDiv" onBlur="document.getElementById('calDiv').style.display='none';">
...
...
..
</div>
이렇게요.
-
그리고 기억이 가물가물한데요. button의 onclick이벤트와 document의 onclink이벤트가 동시에 발생하나요?
버튼이 눌렀을 때는 button의 onclick이 이벤트가 발생하고 그 외의 document가 눌렸다면 body의 onclick이벤트가 발생하는 거로 기억하는데요.
그러면 div닫는 함수 하나 만들어서 body의 onclick에 넣어주면 되지 않나요?
-
김주식
04.18 18:24
가영아빠님 감사합니다.
그러니까 버튼을 클릭하면 버튼이벤트가 먼저 발생하고 바로 document.body 의 이벤트가 발생합니다.
제가 구현하고 싶은 것은 어떤 방법이 되었던...
버튼을 누르면 칼렌더가 떠서 해당 일자를 클릭하면 그 칼렌더는 닫히면 되고
버튼을 눌러 칼렌더가 떠 있는데 해당 일자를 클릭하지 않고 다른 아무곳이나 클릭하면 칼렌더가 닫히도록 할려고 합니다.
알려주신 방법으로 해도 이렇게는 안되용 ㅜㅜ
onblur 을 사용하면 해당 div에 한번은 들어갔다가 클릭하고 나와야 없어지거든요...
암튼!!! 감사합니다. ^^
-
div를 보여줄때 포커스를 주면 어떨까요? 포커스를 줬다면, div안쪽이 아니라 바로 바깥을 클릭해도 onBlur가 발생하지 않을까요?
onblur 같기도 하고...소스를 몰라서..