[javascript] setInterval 함수 질문입니다.
- 작성자 :
- 문*덕
- 작성일 :
- 2015-01-06 16:42:46
- 조회수 :
- 675
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
거의 반나절을 찾아헤매이다 결국 타협하고 질문글을 올려봅니다.
내용은..
한페이지에
<form:hidden path="paramDate"> 과 <input type="text" id="viewDate"> 두개가 있습니다.
hidden 은 <form:form> 안에 들어있어서 컨트롤러 vo와 매핑되고 viewDate 는 단순히 사용자에게 보여주기 위함입니다.
물론 처음에는 pramDate를 hidden 으로 하지 않고 <form:input> 으로 하였습니다.
하지만 사용중인 솔루션이 form안에서는 정상적으로 작동을 하지 않아 form을 분리하면서 저렇게 변경이 되었습니다.
개발하다보면 저런 상황이 올수도 있겠죠..
아무튼 달력에서 누르면 paramDate에 값이 들어갑니다. 첫번째문제입니다.
$("#param").val(선택한날짜);
<form:input>으로 바꾸면 정상적으로 값이 들어오고 <form:hidden>으로해도 컨트롤러에서 잘 받아집니다.
사용자가 입력한 것이 아니기 때문에 이벤트가 발생이 되지 않습니다. stackoverflow에서 반나절을 검색했습니다만..
키와 관련된 이벤트.. input에 있는 onchange 역시 키보드로 입력을 해야만 이벤트가 발생하더군요
jQuery의 bind, trigger, triggerHandler, paste, change 웬만한건 다 해본거 같은데 결론은 키보드 입력이 아니라서 이벤트가 발생되지 않습니다.
이벤트가 발생되면 그안에서 $("#viewDate").val($("#paramDate").val()); 하려고 합니다.
즉 달력을 선택하면 그 값은 paramDate에만 들어가게 만들어져 있다(공통js로 수정어려움)
따라서 값이 들어가면 다시 그 값을 viewDate에 넣고 싶다.
결론은.. 중간에 한번 찾았다가 잘몰라서 건너뛰었던 setInterval 함수를 사용하기로 했습니다.
질문 내용은
1. setInterval 말고 다른 방법이 있는지..
2. setInterval에서 시간을 300으로 설정하였는데(1000 이 1초로 알고 있는데) 무리가 간다거나 문제의 소지가 있지 않은지..
(함수의 로직은 if문 한개와 내용을 넣는 것뿐)
내용은..
한페이지에
<form:hidden path="paramDate"> 과 <input type="text" id="viewDate"> 두개가 있습니다.
hidden 은 <form:form> 안에 들어있어서 컨트롤러 vo와 매핑되고 viewDate 는 단순히 사용자에게 보여주기 위함입니다.
물론 처음에는 pramDate를 hidden 으로 하지 않고 <form:input> 으로 하였습니다.
하지만 사용중인 솔루션이 form안에서는 정상적으로 작동을 하지 않아 form을 분리하면서 저렇게 변경이 되었습니다.
개발하다보면 저런 상황이 올수도 있겠죠..
아무튼 달력에서 누르면 paramDate에 값이 들어갑니다. 첫번째문제입니다.
$("#param").val(선택한날짜);
<form:input>으로 바꾸면 정상적으로 값이 들어오고 <form:hidden>으로해도 컨트롤러에서 잘 받아집니다.
사용자가 입력한 것이 아니기 때문에 이벤트가 발생이 되지 않습니다. stackoverflow에서 반나절을 검색했습니다만..
키와 관련된 이벤트.. input에 있는 onchange 역시 키보드로 입력을 해야만 이벤트가 발생하더군요
jQuery의 bind, trigger, triggerHandler, paste, change 웬만한건 다 해본거 같은데 결론은 키보드 입력이 아니라서 이벤트가 발생되지 않습니다.
이벤트가 발생되면 그안에서 $("#viewDate").val($("#paramDate").val()); 하려고 합니다.
즉 달력을 선택하면 그 값은 paramDate에만 들어가게 만들어져 있다(공통js로 수정어려움)
따라서 값이 들어가면 다시 그 값을 viewDate에 넣고 싶다.
결론은.. 중간에 한번 찾았다가 잘몰라서 건너뛰었던 setInterval 함수를 사용하기로 했습니다.
질문 내용은
1. setInterval 말고 다른 방법이 있는지..
2. setInterval에서 시간을 300으로 설정하였는데(1000 이 1초로 알고 있는데) 무리가 간다거나 문제의 소지가 있지 않은지..
(함수의 로직은 if문 한개와 내용을 넣는 것뿐)
A
안녕하세요. 문종덕님.
우선 setinterval 방식은 아시다 시피 지속적으로 시간 체크를 해주는 로직이 살아 있기 때문에
클라이언트(브라우저) 상에 어느정도 부담을 줄 수 있습니다.
또한 개발하신 방식은 내용이 동기화되어 저장되는 방식이 아니라 시간대 별로 체크하여 집어넣기 때문에
일부 오차가 발생할 가능성도 있으십니다.
위의 경우에는 사용자가 달력을 선택 하였을 경우 paramDate값에 내용이 들어간 이후에 추가적인 이벤트를
수동으로 발생 시켜서 내용을 변경하시는 방식을 사용하셔야 할 것 같습니다.
(예를들어, 화면을 리프레시 시켜서 해당 page의 값을 초기화 하거나,
Javascript custom 이벤트를 정의하여 발생 시키는 방식)
그럼 오늘도 좋은하루 보내시기 바랍니다.
감사합니다.
우선 setinterval 방식은 아시다 시피 지속적으로 시간 체크를 해주는 로직이 살아 있기 때문에
클라이언트(브라우저) 상에 어느정도 부담을 줄 수 있습니다.
또한 개발하신 방식은 내용이 동기화되어 저장되는 방식이 아니라 시간대 별로 체크하여 집어넣기 때문에
일부 오차가 발생할 가능성도 있으십니다.
위의 경우에는 사용자가 달력을 선택 하였을 경우 paramDate값에 내용이 들어간 이후에 추가적인 이벤트를
수동으로 발생 시켜서 내용을 변경하시는 방식을 사용하셔야 할 것 같습니다.
(예를들어, 화면을 리프레시 시켜서 해당 page의 값을 초기화 하거나,
Javascript custom 이벤트를 정의하여 발생 시키는 방식)
그럼 오늘도 좋은하루 보내시기 바랍니다.
감사합니다.