场景:用户在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.如果没有任何选定的字符,请告诉我如何创建范围。 需要解决方案/建议继续.......
答案 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