当前位置:  编程技术>jquery

IE浏览器下记住文本框的光标位置的代码

    来源: 互联网  发布时间:2014-09-03

    本文导语:  IE浏览器下记住文本框的光标位置的代码,有需要的朋友不妨参考下。 方法一:   代码如下: //#region --文本框TextArea光标相关  var Pos = {      //IE版本号      getIEVer: function() {          var match = navigator.appVersion.match(/MSIE...

IE浏览器下记住文本框的光标位置的代码,有需要的朋友不妨参考下。

方法一:
 

代码如下:
//#region --文本框TextArea光标相关
 var Pos = {
     //IE版本号
     getIEVer: function() {
         var match = navigator.appVersion.match(/MSIEs+d+.0;/);
         if (match == null) return -1;
         return +match[0].match(/d+/)[0];
     },
     getPos: function(textBox) {
         if (document.selection) {
             var range = document.selection.createRange();
             var range_all = document.body.createTextRange();
             range_all.moveToElementText(textBox);
             for (start = 0; range_all.compareEndPoints("StartToStart", range) < 0; start++) {
                 range_all.moveStart('character', 1);
             }
             var range_all = document.body.createTextRange();
             range_all.moveToElementText(textBox);
             for (end = 0; range_all.compareEndPoints('StartToEnd', range) < 0; end++) {
                 range_all.moveStart('character', 1);
             }
             var selectionStart = start;
             var selectionEnd = end;
             //ie8-rn在move时会当成一个字符
             if (this.getIEVer() > 8) {
                 var s1 = textBox.value.substr(0, selectionStart);
                 var s2 = textBox.value.substr(0, selectionEnd);
                 var m1 = s1.match(/rn/g);
                 var m2 = s2.match(/rn/g);
                 if (m1 != null) selectionStart += m1.length;
                 if (m2 != null) selectionEnd += m2.length;
             }
             return [selectionStart, selectionEnd];
         }
         else {
             return [t.selectionStart, t.selectionEnd];
         }
     },
     setPos: function(textBox, a, b) {
         if (a && b) {
             if (!(document.selection)) {
                 textBox.setSelectionRange(a, b);
             }
             else {
                 var range = textBox.createTextRange();
                 range.moveEnd('character', -textBox.value.length);
                 range.moveEnd('character', b);
                 range.moveStart('character', a);
                 range.select();
                 textBox.scrollTop = textBox.scrollTop2;
 
             }
         }
     },
     insert: function(textBox, value) {
         var text = textBox.value;
         var a = textBox.selectionStart2 || textBox.selectionStart;
         var b = textBox.selectionEnd2 || textBox.selectionEnd;
         var left = text.substr(0, a);
         var right = text.substr(b, text.length);
         b = a + value.length;
         textBox.value = left + value + right;
         this.setPos(textBox, b, b);
         this.savePos(textBox);
     },
     savePos: function(textBox) {
         if (document.selection) {
             var pos = this.getPos(textBox);
             textBox.selectionStart2 = pos[0];
             textBox.selectionEnd2 = pos[1];
             textBox.scrollTop2 = textBox.scrollTop;
         }
     }
 };
 
 jQuery.fn.extend({
     rememberPos: function () {
         if (document.selection) {
             this.each(function (i, el) {
                 $(el).keyup(function () { Pos.savePos(el); });
                 $(el).mouseup(function () { Pos.savePos(el); });
                 $(el).focus(function () {
                     Pos.setPos(el, el.selectionStart2, el.selectionEnd2);
                 });
 
             });
         }
     }
 });
 
 $(function () {
    $("textarea").rememberPos();
 })

方法二:
其实这是一个误区,其实我们根本就没有兴趣知道光标的具体位置,我们的目的一般有两个:
1.在光标处插入字符
2.记住光标位置,在重获焦点时还原光标位置

所以,只需要textBox.selectRange=document.selection.createRange().duplicate();将选取区间复制一份保存下来。

1.在光标处插入字符textBox.selectRange.text="xxxx";
2.记住光标位置,在重获焦点时还原光标位置textBox.selectRange.select();


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • Android 图片浏览器 雪梦图片浏览器
  • 最新谷歌浏览器(google chrome)官方正式稳定版下载(2014版_2015版谷歌浏览器下载)
  • 使用php检测用户当前使用的浏览器是否为IE浏览器
  • 设置sharepoint 2010文档库中的 pdf文件在浏览器中访问的打开方式
  • 如何防止按浏览器右上角的"x" 来关闭浏览器
  • IE(Internet Explorer)浏览器中启用cookie的步骤
  • 用浏览器看applet,总是只能看到修改前的applet,关了浏览器,再开,还是只能看到修改前的,难道真的要重启机子?太夸张了
  • 微软浏览器IE 11(InternetExplorer 11)简体中文预览版介绍及下载地址
  • 菜鸟用tomcat3.2,在他的root目录下建立了一个test1.jsp.用浏览器显示正常,但我后来删掉了,可用浏览器还可以看到test1.jsp,这是怎么回事
  • php5中当浏览器禁用cookie时保持会话session的方法
  • java/j2ee iis7站长之家
  • 浏览器不能浏览JAVA2写的Applet,那里可有升级包?
  • 新手请教一段javascript代码,如何设置浏览者浏览器的字体?
  • 如何在red hat的网页浏览器中浏览使用ipv6协议的网页?
  • 第一天接触LINUX,我的LINUX自带的网景浏览器为何浏览网页的时候问题如此多呢???
  • 我的小应用程序在JCREATOR的Appletviewer里可以浏览但是不能在浏览器里运行这是为什么
  • PHP的浏览器检测库 Detector
  • 用3G无线上网卡上网必须用sudo运行浏览器才能浏览网页!
  • 糖果浏览器 TangoBrowser
  • 请教如何使用Java编写的Applet程序关闭浏览器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3