IE11中textarea onClick事件的光标位置/索引

时间:2015-01-20 09:02:51

标签: javascript jquery

场景:用户在textarea上进行onClick(在内容之间的某处,而不是单击一下就选择任何字符)。使用javascript需要找到光标的位置。   我们有以下脚本:

comp.focus();
var range = document.selection.createRange();
range.text='|';
var oldval = comp.value;
var pos= oldval.index('|');

代码在IE< 11下运行。使用IE 11' dcoument.selection'未定义。然后文件用IE11" document.selection"应该是" document.getSelection"。因此尝试了以下内容:

comp.focus();
var range = document.getSelection().createRange();

与ver11," document.getSelection()。createRange()"说错误:对象不支持propery或mehtod' createRange()'。    然后尝试获取' var sel = document.getSelection()'的对象。当我尝试打印时,警告' sel' ,它说'无法在undefiend上获取属性toString或null引用'    1.使用旧版本document.selection.createRange即使没有任何字符选择/突出显示也能很好地工作。但是IE11不是这样的。    2.如果没有任何选定的字符,请告诉我如何创建范围。    需要解决方案/建议继续.......

1 个答案:

答案 0 :(得分:-1)

我使用此函数获取光标位置:

(function($) {
    $.fn.getCursorPosition = function() {
        var input = this.get(0);
        if (!input) return; // No (input) element found
        if ('selectionStart' in input) {
            // Standard-compliant browsers
            return input.selectionStart;
        } else if (document.selection) {
            // IE
            input.focus();
            var sel = document.selection.createRange();
            var selLen = document.selection.createRange().text.length;
            sel.moveStart('character', -input.value.length);
            return sel.text.length - selLen;
        }
    }
})(jQuery);

以下代码返回光标位置:

comp.getCursorPosition();

适用于IE11