순수 JS로 input,textarea 요소에 포커스가 안 된 경우만 실행하려면? 채택완료
https://sir.kr/g4_tiptech/30590">https://sir.kr/g4_tiptech/30590
함수호출코드 : document.onkeydown = keyMenuMove;
위 함수 호출 구문을
홈페이지의 모든 INPUT, TEXTAREA 요소에 포커스가 안 된 경우에만 실행시키려면
어떤 식으로 조건문을 짜줘야 하는지?
focus, focus(), hasFocus(), activeElement .......뭔가 이런 것들을 활용할 것 같은데,
구글링 열심히 해봐도 제대로 작동 되는 게 없네요.
일단, 아래처럼 해봤는데, 작동이 안 됩니다. ㅜㅜ
</p>
<p>if("INPUT" === document.activeElement.tagName && "TEXTAREA" === document.activeElement.tagName) {</p>
<p>} else {
document.onkeydown = keyMenuMove;
}</p>
<p>
답변 3개
if 문으로 bind 자체를 걸러내시는게 아니라,
아래 코드처럼 omvKeyPressed 함수 안에서 걸러내면 될것 같습니다.
</p>
<p><script type="text/javascript"></p>
<p>function omvKeyPressed(e) {
if(['INPUT', 'TEXTAREA'].includes(document.activeElement.tagName)) {
return;
}</p>
<p> // ... 나머지 내용</p>
<p>}</p>
<p>document.onkeydown = omvKeyPressed;</p>
<p></script></p>
<p>
답변에 대한 댓글 2개
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
질문이 약간 이상합니다.
INPUT, TEXTAREA 요소에 포커스가 안 된 경우에만 실행
이벤트 onkeydown 이 일어나는 경우 포커스는 그곳이 있어야만 하겠지요.
즉 <input type=text onkeydown="javascript"> <<< 이곳에 포커스가 있어야만 키다운이 이곳에서 일어나죠. 절대로 textarea에는 포커스가 있을수 없습니다.
아마도
function action_keydown() { ................. } 이런 함수를 쓰시는 것 같은데
function action_keydown_textarea() { ................. } 이렇게 위와 거의 동일하지만 몇가지를 뺀 함수를 만들어
<input type=text onkeydown="action_keydown();">
<textarea onkeydown="action_keydown_textarea();"> 이런식으로 서로 함수를 달리쓰면 될것 같네요.
답변에 대한 댓글 1개
출력코드를 두 요소가 포커스될 땐 안 불러오는 것만 생각했는데,
동하아빠 님 방법처럼 두 요소 경우 함수가 작동 안 되게 하는 방법이 있었네요. ㅎ
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
거의 12시간 가깝게 씨름하고 있었는데.. 덕분에 한방에 해결했습니다.
진심으로 감사드립니다. ( ^ ________ ^ ) ====b