2014-06-24 6 views
0

왼쪽 화살표 키의 입력 텍스트 필드에서 커서가 내 테스트 중 하나에서 어떻게 움직이는 지 시뮬레이트하려하지만 이벤트가 작동하지 않는 것 같습니다 어쩌면 보안상의 이유로?). 누구나 해결 방법을 알고 있습니까? 예 : http://jsfiddle.net/UYW6M/.입력 텍스트 필드에서 커서를 이동하는 방법

$(function() { 
    $('#check').click(function(e) { 
     e.preventDefault(); 
     $('input').focus(); 
     console.log($('input')[0].selectionStart); 
    }); 
    $('#move').click(function(e) { 
     e.preventDefault(); 

     var press = jQuery.Event("keypress"); 
     press.ctrlKey = false; 
     press.which = 37; 
     $('input').focus(); 
     setTimeout(function(){ 
      $('input').trigger(press); 
      console.log('event triggered!'); 
     }, 1000); 
    }); 
}); 

키 37가 왼쪽 화살표입니다. 또한 "a"를 삽입 할 때 65와 같은 다른 코드에서는 작동하지 않습니다.

나는 단순성을 위해 여기에 jQuery를 사용하지만, 누군가가 그 콤보에 대한 해결책을 안다면 Angular + Karma에 내 앱이 실제로있다.

+0

난 당신이 내가 할 노력하고있어 것은 http://jsfiddle.net/UYW6M/2/ – theonlygusti

+0

입니다 뭘 하려는지 이해가 안 돼요 왼쪽 화살표를 누르면, "move position"버튼을 누르면 커서 위치가 왼쪽으로 이동합니다. –

답변

0

이것은 보안 문제라고 생각합니다. 그런데 왜 그게 필요하니? 커서 위치를 변경하려면 jquery가 필요하지 않습니다. 순수 자바 스크립트 :

function setCaretPosition(elemId, caretPos) { 
    var elem = document.getElementById(elemId); 

    if(elem != null) { 
     if(elem.createTextRange) { 
      var range = elem.createTextRange(); 
      range.move('character', caretPos); 
      range.select(); 
     } else { 
      if(elem.selectionStart) { 
       elem.focus(); 
       elem.setSelectionRange(caretPos, caretPos); 
      } 
      else 
       elem.focus(); 
     } 
    } 
} 

더 많은 정보 : Set keyboard caret position in html textbox

+0

왼쪽 화살표를 누르면 문자열이 비어있을 때 다른 요소로 이동하는 대신 커서가 문자열 내의 이전 위치로 이동하는지 확인해야합니다. 프로그래밍 방식으로 커서 위치를 변경하면 왼쪽 화살표를 눌렀을 때 어떤 일이 발생하는지 테스트하지 않습니다. –

+0

커서가 현재 입력에 없다면'elem.selectionStart' 또는'elem.createTextRange'는 0이됩니다. 그래서 if 문은 작동하지 않을 것입니다. if (typeof elem.selectionStart! == 'undefined') '대신이 문제를 해결합니다. –

관련 문제