编辑器demo

编辑器按钮操作

<button onclick="insertAtCursor('editcode','!=');" type="button" class="btn btn-info">!=</button>
<button onclick="backspaceAtCursor('editcode');" type="button" class="btn btn-danger">del</button>

编辑器js代码插入删除操作

/**
* 在光标处插入文字
* @param {[DOM对象或者其ID]} field [可输入的域对象或者ID]
* @param {[type]} myValue [待出入的文字]
* @return {[type]} [description]
*/
function insertAtCursor(field, myValue) {
var myField ;
if("string" === typeof field) {
myField = document.getElementById(field);
} else if('HTMLTextAreaElement' === field.constructor.name) {
myField = field;
} else {
return;
}

//IE 浏览器
if (document.selection) {
myField.focus();
sel = document.selection.createRange();
sel.text = myValue;
sel.select();
}
//FireFox、Chrome等
else if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart,
endPos = myField.selectionEnd,

// 保存滚动条
restoreTop = myField.scrollTop,
fieldVal = myField.value;

myField.value = fieldVal.substring(0, startPos) + myValue + fieldVal.substring(endPos, fieldVal.length);

if (restoreTop > 0) {
myField.scrollTop = restoreTop;
}

myField.focus();
myField.selectionStart = startPos + myValue.length;
myField.selectionEnd = startPos + myValue.length;
} else {
myField.value += myValue;
myField.focus();
}
}

/**
* 在光标处开始退格
* @param {[DOM对象或者其ID]} field [可输入的域对象或者ID]
* @return {[type]} [description]
*/
function backspaceAtCursor(field) {
var myField ;
if("string" === typeof field) {
myField = document.getElementById(field);
} else if('HTMLTextAreaElement' === field.constructor.name) {
myField = field;
} else {
return;
}

//IE 浏览器
if (document.selection) {
myField.focus();
sel = document.selection.createRange();
sel.text = '';
/*var _text = sel.text;
sel.text = _text && _text.substr(0, _text.length - 1); */
sel.select();
}
//FireFox、Chrome等
else if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart,
endPos = myField.selectionEnd,

// 保存滚动条
restoreTop = myField.scrollTop,
fieldVal = myField.value;

if(startPos === endPos) {
var newStart = (startPos === 0 ? 0 : startPos - 1);
myField.value = fieldVal.substring(0, newStart)
+ fieldVal.substring(endPos, fieldVal.length);

myField.selectionStart = newStart;
myField.selectionEnd = newStart;
} else {
myField.value = fieldVal.substring(0, startPos) + fieldVal.substring(endPos, fieldVal.length);
myField.selectionEnd = startPos;
}

if (restoreTop > 0) {
myField.scrollTop = restoreTop;
}

myField.focus();

} else {
myField.value += myValue;
myField.focus();
}
}

当能力支撑不了野心时,就该静下心来学习!
原文地址:https://www.cnblogs.com/1234cjq/p/6558645.html