在网上看了很多用js在光标处插入文字的代码,很多都没有用,互抄而已,浪费时间。最近用到一个新方法,可以到达这个需求。IE支持document.selection,Firefox,Chrome,Safari以及Opera都有selectionStart和selectionEnd属性。
效果演示
代码如下:
01 | function insertText(obj,str) { |
02 | if (document.selection) { |
03 | var sel = document.selection.createRange(); |
04 | sel.text = str; |
05 | } else if ( typeof obj.selectionStart === 'number' && typeof obj.selectionEnd === 'number' ) { |
06 | var startPos = obj.selectionStart, |
07 | endPos = obj.selectionEnd, |
08 | cursorPos = startPos, |
09 | tmpStr = obj.value; |
10 | obj.value = tmpStr.substring(0, startPos) + str + tmpStr.substring(endPos, tmpStr.length); |
11 | cursorPos += str.length; |
12 | obj.selectionStart = obj.selectionEnd = cursorPos; |
13 | } else { |
14 | obj.value += str; |
15 | } |
16 | } |
17 | function moveEnd(obj){ |
18 | obj.focus(); |
19 | var len = obj.value.length; |
20 | if (document.selection) { |
21 | var sel = obj.createTextRange(); |
22 | sel.moveStart( 'character' ,len); |
23 | sel.collapse(); |
24 | sel.select(); |
25 | } else if ( typeof obj.selectionStart == 'number' && typeof obj.selectionEnd == 'number' ) { |
26 | obj.selectionStart = obj.selectionEnd = len; |
27 | } |
28 | } |