两个JavaScript代码的问题

两个JavaScript代码的问题,javascript,jquery,Javascript,Jquery,我有这两个密码- 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.crea

我有这两个密码-

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);

第一个用于获取文本区域中的光标位置,第二个用于确定文本区域的结尾,但它们给出了相同的结果?
哪里出错了?

我把它修好了。很简单:)。
我只是将第二个代码(用于确定textarea的结尾)替换为:
$(“#txtarr”).val().length
(jQuery)。
#txtarr
是我的textarea的id。

两段代码以稍微不同的方式执行相同的操作。每个都试图获取插入符号或所选内容在文本区域(或文本输入)中的位置,尽管第一个只获取所选内容的开始位置,而第二个同时获取开始和结束位置


两者都有不可靠的推论:第一种假设浏览器具有
document.selection
将支持
TextRange
,而第二个则进行相同的推断,再加上另一个假设浏览器不支持
文档。selection
将支持
selectionStart
selectionEnd
文本区域的属性。两者都不能正确处理IE中的换行符。对于这样做的代码,请参见我的回答:

请描述textarea包含的实际情况,预期结果是什么,实际结果是什么,以及使用什么事件在哪里使用函数。我使用按backspace键的函数。第二个函数返回数字,显示textarea的结束位置。第一个函数应返回插入符号位置在textarea中的位置。但两个函数返回相同的结果(例如,第一个函数返回37,第二个函数返回37,作为数字,它是textarea的结束).但这就是我想做的第二件事。好的。在这种情况下,您只需要
document.getElementById('txtarr').value.length
是的,我只是演示了对于单个元素的情况,没有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;
}