我有这两个代码 -
new function($) {
$.fn.getCursorPosition = function() {
var pos = 0;
var el = $(this).get(0);
// IE Support
if (document.selection) {
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;
}
// Firefox support
else if (el.selectionStart || el.selectionStart == '0')
pos = el.selectionStart;
return pos;
}
} (jQuery);
和
var element = document.getElementById('txtarr');
if( document.selection ){
// The current selection
var range = document.selection.createRange();
// We'll use this as a 'dummy'
var stored_range = range.duplicate();
// Select all text
stored_range.moveToElementText( element );
// Now move 'dummy' end point to end point of original range
stored_range.setEndPoint( 'EndToEnd', range );
// Now we can calculate start and end points
element.selectionStart = stored_range.text.length - range.text.length;
element.selectionEnd = element.selectionStart + range.text.length;
}
第一个用于获取文本区域中的光标位置,第二个用于确定textarea的结尾,但它们给出相同的结果? 哪里出错了?
答案 0 :(得分:1)
两段代码都以略微不同的方式做同样的事情。每个人都试图在textarea(或文本输入)中获取插入符号或选择的位置,尽管第一个只获得选择的开始位置,而第二个获得开始和结束位置。
两者都有不明确的推论:第一个假定使用document.selection
的浏览器将支持TextRange
,而第二个假设相同的推理加上另一个假设不支持document.selection
的浏览器将具有支持textareas的selectionStart
和selectionEnd
属性。也不会正确处理IE中的换行符。对于执行此操作的代码,请参阅我的答案:How to get the start and end points of selection in text area?
答案 1 :(得分:0)
我修好了。这很简单:)。
我只需用$("#txtarr").val().length
(jQuery)替换第二个代码(用于确定textarea的结尾)。#txtarr
是我的textarea的id。