博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设置输入域(input/textarea)中文本光标的位置
阅读量:7233 次
发布时间:2019-06-29

本文共 1730 字,大约阅读时间需要 5 分钟。

以前记录了一篇  ,实现光标定位在文本的最末。这种需求往往在修改现有的文本。有时可能还需要把光标定位在首位,或者中间某个位置,这就需要实现一个更通用的方法。

这个方法setCursorPosition需要使用两个原生API

 

原生JS实现

/* * 设置输入域(input/textarea)光标的位置 * @param {HTMLInputElement/HTMLTextAreaElement} elem * @param {Number} index */function setCursorPosition(elem, index) {    var val = elem.value    var len = val.length    // 超过文本长度直接返回    if (len < index) return    setTimeout(function() {        elem.focus()        if (elem.setSelectionRange) { // 标准浏览器            elem.setSelectionRange(index, index)            } else { // IE9-            var range = elem.createTextRange()            range.moveStart("character", -len)            range.moveEnd("character", -len)            range.moveStart("character", index)            range.moveEnd("character", 0)            range.select()        }    }, 10)}

  

jQuery插件

$.fn.setCursorPosition = function(option) {    var settings = $.extend({        index: 0    }, option)    return this.each(function() {        var elem  = this        var val   = elem.value        var len   = val.length        var index = settings.index        // 非input和textarea直接返回        var $elem = $(elem)        if (!$elem.is('input,textarea')) return        // 超过文本长度直接返回        if (len < index) return        setTimeout(function() {            elem.focus()            if (elem.setSelectionRange) { // 标准浏览器                elem.setSelectionRange(index, index)                } else { // IE9-                var range = elem.createTextRange()                range.moveStart("character", -len)                range.moveEnd("character", -len)                range.moveStart("character", index)                range.moveEnd("character", 0)                range.select()            }        }, 10)    })}

 

线上示例:

 

相关:

转载地址:http://rgsfm.baihongyu.com/

你可能感兴趣的文章
cvReleaseImage()函数说明
查看>>
linux下查看某个文件属于哪个包
查看>>
Weui 文件上传完整版示例
查看>>
ubuntu上安装 MySQL 启动/停止 连接MySQL
查看>>
liunx 修改ssh 端口22
查看>>
iOS企业证书申请介绍
查看>>
hdu 1950 Bridging signals(最长上升子序列)
查看>>
jquery学习收获
查看>>
es6js promise在ie中报错“未定义”
查看>>
思科HSRP和Port-channel配置
查看>>
常用的sql脚本(陆续更新)
查看>>
mongodb的gridfs
查看>>
api图片传输,转成64位字符串进行传输
查看>>
Matlab高斯分布输入的PID控制
查看>>
【Java】自定义异常
查看>>
Ubuntu14.04server开放rootssh登录权限
查看>>
错误 1 error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
查看>>
Linux 权限基础说明
查看>>
2017级面向对象程序设计寒假作业3
查看>>
迭代器
查看>>