2011-08-01 9 views
2

자동 완성 선택 중에 커서의 이동을 비활성화해야합니다. 친구를위한 검색 창으로 contentEditable div가 있습니다. 글자를 입력하면 자동 완성 추천 검색어가 검색 창 아래에 나타납니다. 자동 완성 제안을 선택하는 동안 화살표 키를 사용하여 선택해야합니다. 그러나 이렇게하면 검색 창에 커서가 이동하고 검색 창에서 현재 선택된 항목도 비활성화됩니다. 어떻게 든 자바 스크립트에서 키보드의 특정 버튼/키에 대한 커서 이동을 비활성화 할 수 있습니까?자동 완성 선택 중에 커서 이동 비활성화

참고 : 마지막 위치에 커서를 설정하면

  • 저를위한 해결책이 아니다.
  • 나는 왼쪽, 오른쪽, 위쪽, 아래쪽 화살표 키와 당신은 화살표 키 또는 리턴 키에 해당하는 키 코드가를 keyDown 이벤트에 preventDefault()를 호출 할 수 있습니다

답변

2

키도 캐리지 리턴을 비활성화 할 . 이렇게하면 커서가 움직이지 않습니다.

  • 38 왼쪽
  • :

    • 37 : 최대
    • 39 : 오른쪽
    • 40 :
    • 다운

      event.keyCode 속성은 A를 keyDown 이벤트 기간 동안 다음과 같아야합니다 13 : 돌아 가기

    따라서 이벤트 수신기를 div에 연결할 수 있습니다.

    var autoCompleteOn = false; //Set this flag in an auto-complete handler 
    yourDiv.addEventListener("keydown",function(e){ 
             //v------all arrow keys------------v  v---Return----v 
        if(autoCompleteOn && ((e.keyCode >= 37 && e.keyCode <= 40) || e.keyCode == 13)){ 
        e.preventDefault(); 
        return false; 
        } 
    }, false); 
    

    참고 : 활성 자동 완성 제안이있을 경우 이러한 이벤트를 취소 나는 편의상하여 addEventListener를 사용하지만, 호환성을 위해, 당신은는 attachEvent를 사용하거나 또한 onKeyDown에 있습니다.

    jsFiddle.

    0

    jquery를 사용합니까?

    그래서 당신이

    $("#whatever").bind("keypress", function(e) { 
        if (e.keyCode >36 && e.keyCode <41) return false; 
    }); 
    

    검색을 시도해야하는 경우 모든 키에 대한 자바 스크립트 키 코드

    관련 문제