createTextRange - IE8中的奇怪行为

时间:2009-10-16 13:17:26

标签: javascript jquery internet-explorer-6 internet-explorer-8 textrange

我有以下问题。在作为自动完成器工作的文本输入字段中,它返回的一些建议比它更好。离开现场时会出现问题。在IE中,文本光标位于建议字符串的末尾,因此您实际上只能看到它的最后部分。所以我使用下面的代码修复它,它在IE6下工作,但在IE8中这不起作用,字段总是被选中,我不能在页面上选择任何东西。

我的问题是,在我离开之后,在输入字段的开头移动光标的正确方法是什么?

$('#myAutocompleter').blur(function(){
  textRange = this.createTextRange();
  textRange.collapse(true);
  textRange.select();
});

(使用的代码是用jQuery编写的。)

3 个答案:

答案 0 :(得分:3)

我相信你要找的是文本范围的.moveStart.moveEnd方法:

$('#myAutocompleter').blur(function(){
  textRange = this.createTextRange();
  textRange.collapse(true);
  textRange.moveEnd('character',0);
  textRange.moveStart('character',0);
  textRange.select();
});

(在IE8中测试功能)

答案 1 :(得分:0)

我不确定我理解你的问题,但IE有自己的一套方法来处理页面上的文本选择,所以这就是为什么它的行为不同。

在这里查看教程: http://www.quirksmode.org/dom/range_intro.html

这里的兼容性: http://www.quirksmode.org/dom/w3c_range.html

如果这不是您的问题,请尝试在模糊内部执行鼠标或单击事件检查并将选择代码放在那里?也许这会导致选择在放置到选择位置之前远离输入字段。

答案 2 :(得分:0)

我有类似的情况,我希望根据这样的事情看到某些东西的顶部/底部。 我使用了jQuery scrollTo插件

).scrollTo('100%')

).scrollTo('0%')

编辑1: 我在这个领域使用它:

<textarea cols="57" rows="2" class="cssTextarea cptEntryArea"></textarea>

使用此代码:

  $(".cptEntryArea").change(function()
        {
           $(this).scrollTo('0%');
   });