You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

73 lines
2.2 KiB

(function(jQuery){
jQuery.fn.extend({
/**
* 选中内容
*/
selectContents: function(){
$(this).each(function(i){
var node = this;
var selection, range, doc, win;
if ((doc = node.ownerDocument) &&
(win = doc.defaultView) &&
typeof win.getSelection != 'undefined' &&
typeof doc.createRange != 'undefined' &&
(selection = window.getSelection()) &&
typeof selection.removeAllRanges != 'undefined')
{
range = doc.createRange();
range.selectNode(node);
if(i == 0){
selection.removeAllRanges();
}
selection.addRange(range);
}
else if (document.body &&
typeof document.body.createTextRange != 'undefined' &&
(range = document.body.createTextRange()))
{
range.moveToElementText(node);
range.select();
}
});
},
/**
* 初始化对象以支持光标处插入内容
*/
setCaret: function(){
if(!document.selection) return; var initSetCaret = function(){ var textObj = $(this).get(0); textObj.caretPos = document.selection.createRange().duplicate(); }; $(this) .click(initSetCaret) .select(initSetCaret) .keyup(initSetCaret); }, /** * 在当前对象光标处插入指定的内容 */ insertAtCaret: function(textFeildValue){ var textObj = $(this).get(0); if(document.all && textObj.createTextRange && textObj.caretPos){ var caretPos=textObj.caretPos; caretPos.text = caretPos.text.charAt(caretPos.text.length-1) == '' ? textFeildValue+'' : textFeildValue; } else if(textObj.setSelectionRange){ var rangeStart=textObj.selectionStart; var rangeEnd=textObj.selectionEnd; var tempStr1=textObj.value.substring(0,rangeStart); var tempStr2=textObj.value.substring(rangeEnd); textObj.value=tempStr1+textFeildValue+tempStr2; textObj.focus(); var len=textFeildValue.length; textObj.setSelectionRange(rangeStart+len,rangeStart+len); textObj.blur(); } else { textObj.value+=textFeildValue; } } }); })(jQuery);