JavaScript

超轻量级php框架startmvc

javascript获取以及设置光标位置

更新时间:2020-04-23 10:30 作者:startmvc
一.获取光标位置://获取光标位置functiongetCursortPosition(textDom){varcursorPos=0;if(document.selection){/

一. 获取光标位置:


// 获取光标位置
function getCursortPosition (textDom) {
 var cursorPos = 0;
 if (document.selection) {
 // IE Support
 textDom.focus ();
 var selectRange = document.selection.createRange();
 selectRange.moveStart ('character', -textDom.value.length);
 cursorPos = selectRange.text.length;
 }else if (textDom.selectionStart || textDom.selectionStart == '0') {
 // Firefox support
 cursorPos = textDom.selectionStart;
 }
 return cursorPos;
}

二. 设置光标位置:


// 设置光标位置
function setCaretPosition(textDom, pos){
 if(textDom.setSelectionRange) {
 // IE Support
 textDom.focus();
 textDom.setSelectionRange(pos, pos);
 }else if (textDom.createTextRange) {
 // Firefox support
 var range = textDom.createTextRange();
 range.collapse(true);
 range.moveEnd('character', pos);
 range.moveStart('character', pos);
 range.select();
 }
}

三. 获取选中文字:


// 获取选中文字
function getSelectText() {
 var userSelection, text;
 if (window.getSelection) {
 // Firefox support
 userSelection = window.getSelection();
 } else if (document.selection) {
 // IE Support
 userSelection = document.selection.createRange();
 }
 if (!(text = userSelection.text)) {
 text = userSelection;
 }
 return text;
}

四. 选中特定范围的文本:


/**
* 选中特定范围的文本
* 参数:
* textDom [JavaScript DOM String] 当前对象
* startPos [Int] 起始位置
* endPos [Int] 终点位置
*/
function setSelectText(textDom, startPos, endPos) {
 var startPos = parseInt(startPos),
 endPos = parseInt(endPos),
 textLength = textDom.value.length;
 if(textLength){
 if(!startPos){
 startPos = 0;
 }
 if(!endPos){
 endPos = textLength;
 }
 if(startPos > textLength){
 startPos = textLength;
 }
 if(endPos > textLength){
 endPos = textLength;
 }
 if(startPos < 0){
 startPos = textLength + startPos;
 }
 if(endPos < 0){
 endPos = textLength + endPos;
 }
 if(textDom.createTextRange){
 // IE Support
 var range = textDom.createTextRange();
 range.moveStart("character",-textLength);
 range.moveEnd("character",-textLength);
 range.moveStart("character", startPos);
 range.moveEnd("character",endPos);
 range.select();
 }else{
 // Firefox support
 textDom.setSelectionRange(startPos, endPos);
 textDom.focus();
 }
 }
}

五. 在光标后插入文本:


/**
* 在光标后插入文本
* 参数:
* textDom [JavaScript DOM String] 当前对象
* value [String] 要插入的文本
*/
function insertAfterText(textDom, value) {
 var selectRange;
 if (document.selection) {
 // IE Support
 textDom.focus();
 selectRange = document.selection.createRange();
 selectRange.text = value;
 textDom.focus();
 }else if (textDom.selectionStart || textDom.selectionStart == '0') {
 // Firefox support
 var startPos = textDom.selectionStart;
 var endPos = textDom.selectionEnd;
 var scrollTop = textDom.scrollTop;
 textDom.value = textDom.value.substring(0, startPos) + value + textDom.value.substring(endPos, textDom.value.length);
 textDom.focus();
 textDom.selectionStart = startPos + value.length;
 textDom.selectionEnd = startPos + value.length;
 textDom.scrollTop = scrollTop;
 }
 else {
 textDom.value += value;
 textDom.focus();
 }
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!