javascript - 대입 - jQuery에서 "입력 위치의 커서 위치 변경"을 감지합니까?



jquery textarea selector (1)

아니요, "커서 위치가 변경되었습니다"와 같은 이벤트가 없습니다.

하지만 커서 위치가 바뀌 었는지 알고 싶다면 다음과 같이 할 수 있습니다. jquery 1.7 테스트, Ie8 및 크롬 테스트

var last_position = 0;
$(document.ready(function () {
    $("#my_input").bind("keydown click focus", function() {
        console.log(cursor_changed(this));
    });
});

커서가 변경되면 console.log가 반환됩니다.

function cursor_changed(element) {
    var new_position = getCursorPosition(element);
    if (new_position !== last_position) {
        last_position = new_position;
        return true;
    }
        return false;
}

function getCursorPosition(element) {
    var el = $(element).get(0);
    var pos = 0;
    if ('selectionStart' in el) {
        pos = el.selectionStart;
    } else if ('selection' in document) {
        el.focus();
        var Sel = document.selection.createRange();
        var SelLength = document.selection.createRange().text.length;
        Sel.moveStart('character', -el.value.length);
        pos = Sel.text.length - SelLength;
    }
    return pos;
}

https://src-bin.com

jQuery TextRange 라는 플러그인을 사용하여 입력 (내 경우 텍스트 영역) 내의 커서 위치를 가져오고 위치도 설정합니다.

하지만 지금은 해결하기가 더 힘듭니다. jQuery에서 "커서 위치가 변경되었습니다"와 같은 이벤트가 있는지 알고 싶습니다. 내 말은 다음과 같은 의미입니다.

$('#my-input').on('cursorchanged', function(e){
    // My code goes here.
)};

커서가 input / textarea 안에 언제 이동되는지 알기를 원합니다. 화살표 키나 마우스 클릭으로 중요하지 않습니다. 저는 jQuery 초보자입니다. 그러나 jQuery에 이와 같은 이벤트가 없거나 존재하지 않습니까?





input