我有一个场景,我需要将光标放在文本区域上,然后单击同一页面上的树视图节点,以便在单击树节点之前将节点的文本选择到我放置光标的文本区域中。
我得到了很多关于堆栈溢出的答案,包括以下内容,
如果光标放置,则在光标位置的文本区域中插入文本,否则文本应最后附加在 IE 中
FF 和 Chrome 在上述解决方案中运行良好,但 IE 8 或更低版本会在焦点移到其他控件时失败(未使用 IE9 检查)。
几乎所有帖子中都有以下或类似的 IE 实现:
(function ($) {
$.fn.getCursorPosition = function () {
var el = $(this).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;
}
})(jQuery);
注意:我们也可以使用if(el.selectionStart || el.selectionStart == '0')
代替if ('selectionStart' in el)
和 if(document.selection)
代替if ('selection' in document)
但是,当焦点首先移动到其他控件然后执行它时,这将失败。在我的情况下,当用户遍历节点时,焦点将移至树节点。
这种情况有什么解决方案吗?
我正在考虑在文本区域上编写 onkeyup 和 onclick 并将其光标位置保存到隐藏字段中,因此当焦点移动到其他控件时,我将有隐藏字段来获取文本区域的光标位置。我稍后会在这里发布,同时如果有人有什么好主意,请分享。
先感谢您