我的应用是在input输入数字金额的时候,自动转为浮点数,那么光标需要定位到小数点前面。
文章中的源码需要稍微修改后,才能适用于各种项目环境。
原文地址:
http://www.cnblogs.com/snandy/p/4112488.html
以下内容为原文备份:
/* * 设置输入域(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) }) }