텍스트 상자의 탭 키 캡처

텍스트 상자 내에서 키를 사용하여 네 칸을 넘나들며 탭할 수 있었으면 합니다. 지금처럼 Tab 키를 누르면 커서가 다음 입력으로 이동합니다.

텍스트 상자의 Tab 키가 UI로 팝업되기 전에 캡처할 수 있는 자바스크립트가 있나요?

일부 브라우저(예: FireFox)에서는 이를 허용하지 않을 수 있다는 것을 알고 있습니다. 사용자 지정 키 콤보(예: Shift+Tab, 또는 Ctrl+Q)는 어떨까요?

질문에 대한 의견 (2)
해결책

'/', '이벤트' 케이다운 포착하십시오 경우에도 키우프 있는 이벤트만 tab 키를 화재, 이들은 여전히 필요합니다, 다른 방법으로 기본 동작을 이동하는 것을 막기 위해 다음 항목에는 탭 순서, 발생하지 않도록.

Firefox 에서 preventDefault () 메서드를 호출할 수 있습니다 '' 이벤트 객체를 데이터베이스에구성원을 이벤트 핸들러를 통과시켰다. Ie 에서 반환되기를 거짓값 이벤트 에서 처리할 수 있습니다. 포함한다) 의 이벤트 객체를 IE 에서 사용할 수 있는 방법을 preventDefault library) 은 'a' 와 FF.


<input type="text" id="myInput">
<script type="text/javascript">
    var myInput = document.getElementById("myInput");
    if(myInput.addEventListener ) {
        myInput.addEventListener('keydown',this.keyHandler,false);
    } else if(myInput.attachEvent ) {
        myInput.attachEvent('onkeydown',this.keyHandler); /* damn IE hack */
    }

    function keyHandler(e) {
        var TABKEY = 9;
        if(e.keyCode == TABKEY) {
            this.value += "    ";
            if(e.preventDefault) {
                e.preventDefault();
            }
            return false;
        }
    }
</script>
해설 (3)

양식 항목 간에 탭이 끊어지는 것보다 탭 들여쓰기가 작동하지 않는 것이 더 낫습니다.

마크다운 상자에 코드를 입력할 때 들여쓰기를 하려면 Ctrl+K(또는 Mac의 경우 ⌘K)를 사용하세요.

실제로 동작을 중지하는 측면에서 보면, 이벤트 콜백에서 false를 반환하면 (스택 오버플로우가 사용하는) jQuery가 이벤트 버블링을 중지합니다. 이렇게 하면 여러 브라우저에서 작업하기가 더 쉬워집니다.

해설 (0)

이전 답변도 괜찮지만, 저는 동작과 프레젠테이션을 혼합하는 것(HTML에 자바스크립트를 넣는 것)에 단호하게 반대하는 사람 중 한 명이기 때문에 이벤트 처리 로직을 자바스크립트 파일에 넣는 것을 선호합니다. 또한 모든 브라우저가 이벤트(또는 e)를 같은 방식으로 구현하는 것은 아닙니다. 로직을 실행하기 전에 미리 확인하는 것이 좋습니다:

document.onkeydown = TabExample;

function TabExample(evt) {
  var evt = (evt) ? evt : ((event) ? event : null);
  var tabKey = 9;
  if(evt.keyCode == tabKey) {
    // do work
  }
}
해설 (0)

키의 기본 동작을 변경하지 않는 것이 좋습니다. 저는 가능한 한 마우스를 건드리지 않고 많은 작업을 하기 때문에 탭 키가 양식의 다음 필드로 이동하지 않도록 설정하면 매우 짜증이 날 것입니다.

그러나 바로 가기 키는 특히 큰 코드 블록과 중첩이 있는 경우 유용할 수 있습니다. Shift-TAB은 일반적으로 양식의 이전 필드로 이동하기 때문에 좋지 않은 옵션입니다. WMD 편집기에 단축키와 함께 코드 탭을 삽입할 수 있는 새로운 버튼을 추가하면 어떨까요?

해설 (2)

문제가 있는 해답을 스콧쿤 주어진다.

다음은 이

} else if(el.attachEvent ) {
    myInput.attachEvent('onkeydown',this.keyHandler); /* damn IE hack */
}

있어야 합니다.

} else if(myInput.attachEvent ) {
    myInput.attachEvent('onkeydown',this.keyHandler); /* damn IE hack */
}

이 때문에 이 didn& # 39, IE 에서 빗나갔다. 스콧쿤 업데이트 코드가 있는 것으로 기대했다.

해설 (0)

크롬, 고도 탭 탭 문자 '의 Mac 에서 삽입물의 붙여넣습니다 &lt, textarea&gt,' 현장.

여기 한 가지. Wee!

해설 (0)