-1

内部でテキストが選択された入力ボックスがあります。

選択領域内をクリックすると、キャレットの位置を取得したいと思います。

役立つと思われる唯一の属性は選択開始属性ですが、入力ボックスが選択されているため、常に0です。

クリックのキャレット位置を取得するにはどうすればよいですか?

4

1 に答える 1

0

テキストボックス内をクリックするとキャレットの位置を取得できますが、選択したテキストはDOMノードではないため、選択した部分にクリックイベントを割り当てることはできません。クリックしたキャレット位置だけが必要な場合は、これが役立ちます。

    function GetCaretPosition(ctrl) {
        var CaretPos = 0; // IE Support
    if (document.selection) {
            ctrl.focus();
            var Sel = document.selection.createRange();
            Sel.moveStart('character', - ctrl.value.length);
            CaretPos = Sel.text.length;
        }
        // Firefox support
        else if (ctrl.selectionStart || ctrl.selectionStart == '0') CaretPos = ctrl.selectionStart;
        return (CaretPos);
    }

$(document).ready(function(e) {
    $('.textBox').click(function(e) {
        alert(GetCaretPosition(this));
    });
});

http://jsfiddle.net/thvd5/を確認してください

于 2013-01-06T14:59:06.140 に答える