80 lines
2.6 KiB
JavaScript
80 lines
2.6 KiB
JavaScript
define(function(require, exports, module) {
|
|
|
|
(function($){
|
|
$.fn.extend({
|
|
// 获取当前光标位置的方法
|
|
getCurPos:function() {
|
|
var curCurPos = '';
|
|
var all_range = '';
|
|
if (navigator.userAgent.indexOf("MSIE") > -1) { //IE
|
|
|
|
if( $(this).get(0).tagName == "TEXTAREA" ){
|
|
// 根据body创建textRange
|
|
all_range = document.body.createTextRange();
|
|
// 让textRange范围包含元素里所有内容
|
|
all_range.moveToElementText($(this).get(0));
|
|
} else {
|
|
// 根据当前输入元素类型创建textRange
|
|
all_range = $(this).get(0).createTextRange();
|
|
}
|
|
|
|
// 输入元素获取焦点
|
|
$(this).focus();
|
|
|
|
// 获取当前的textRange,如果当前的textRange是一个具体位置而不是范围,textRange的范围从start到end.此时start等于end
|
|
var cur_range = document.selection.createRange();
|
|
|
|
// 将当前的textRange的end向前移"选中的文本.length"个单位.保证start=end
|
|
cur_range.moveEnd('character',-cur_range.text.length)
|
|
|
|
// 将当前textRange的start移动到之前创建的textRange的start处, 此时当前textRange范围变为整个内容的start处到当前范围end处
|
|
cur_range.setEndPoint("StartToStart",all_range);
|
|
|
|
// 此时当前textRange的Start到End的长度,就是光标的位置
|
|
curCurPos = cur_range.text.length;
|
|
} else {
|
|
// 文本框获取焦点
|
|
$(this).focus();
|
|
// 获取当前元素光标位置
|
|
curCurPos = $(this).get(0).selectionStart;
|
|
}
|
|
// 返回光标位置
|
|
return curCurPos;
|
|
},
|
|
// 设置当前光标位置方法
|
|
setCurPos:function(start,end) {
|
|
if(navigator.userAgent.indexOf("MSIE") > -1){
|
|
var all_range = '';
|
|
|
|
if( $(this).get(0).tagName == "TEXTAREA" ){
|
|
// 根据body创建textRange
|
|
all_range = document.body.createTextRange();
|
|
// 让textRange范围包含元素里所有内容
|
|
all_range.moveToElementText($(this).get(0));
|
|
} else {
|
|
// 根据当前输入元素类型创建textRange
|
|
all_range = $(this).get(0).createTextRange();
|
|
}
|
|
|
|
$(this).focus();
|
|
|
|
// 将textRange的start设置为想要的start
|
|
all_range.moveStart('character',start);
|
|
|
|
// 将textRange的end设置为想要的end. 此时我们需要的textRange长度=end-start; 所以用总长度-(end-start)就是新end所在位置
|
|
all_range.moveEnd('character',-(all_range.text.length-(end-start)));
|
|
|
|
// 选中从start到end间的文本,若start=end,则光标定位到start处
|
|
all_range.select();
|
|
}else{
|
|
// 文本框获取焦点
|
|
$(this).focus();
|
|
|
|
// 选中从start到end间的文本,若start=end,则光标定位到start处
|
|
$(this).get(0).setSelectionRange(start,end);
|
|
}
|
|
}
|
|
});
|
|
})(jQuery);
|
|
|
|
}); |