站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Javascript 专题解释一段在光标位置插入字符的js代码

解释一段在光标位置插入字符的js代码

摘要: 解释一段在光标位置插入字符的js代码
<tr> <td> 这篇小文本来应该在昨天发的,但是由于我昨天敲错了一个键(就是IBM笔记本键盘上的前进后退),导致文章丢失...今天就简写了。
网络上有许多能在光标位置插入字符的js代码,比较啰嗦,不适合讲解。
我写了一段简单的代码,解释一下:

<form><textarea name=a onclick=this.pos=document.selection.createRange(); onkeyup=this.pos=document.selection.createRange(); onselect=this.pos=document.selection.createRange(); ONLOAD="this.pos=document.selection.createRange();">1234567</textarea>
<input onclick="try{this.form.a.pos.text='插!';}catch(e){}" type=button value=插!>
</form>

<form>
<textarea NAME="a" ONSELECT="this.pos=document.selection.createRange();" onCLICK="this.pos=document.selection.createRange();" onKEYUP="this.pos=document.selection.createRange();">1234567</textarea>
<input TYPE="button" VALUE="插!" onCLICK="try{this.form.a.pos.text='插!';}catch(e){}">
</form>


总体思路:在用户选择(ONSELECT),单击(onCLICK),击键(onKEYUP)时存储选区对象,然后替换选区中内容。
也可以用(onfocus,onchange).

这里用了一个巧妙的办法绕过了我们通常的思路“光标的位置”,取而代之的是“选取的对象”。

当你选取123的时候,123这个选区对象就会进入我们自定义的pos变量中,选区的text属性是123,你插入(onCLICK)的时候,就把这个属性替换成你的内容了。

当你仅仅单击一下,选区text属性的长度是0,但是选区对象仍然存在,因此,你插入(onCLICK)的时候就把这个长度为0的text属性,替换成了你要插入的文本。看上去就像是在光标位置插入了一样。

这是目前偶能想到的最简单的办法。



考完试了,其实应该很放松的,但仍然感觉很压抑,很压抑。中午在外面吃了一个烧茄子一碗羊杂半瓶啤酒(因为太凉了),晚上就吃中午剩的茄子了,一会炒个鸡蛋,刚闷了米饭。下午帮Chris电话解决了讨厌的STD software这个垃圾插件(IE就是垃圾)。晚上要帮妈完成排版任务。word排版真不是很好用,尤其是几十万字。想心理调整两天再弄XNA...家里又我剩我一个人了,一会儿吃过饭决定去买断臂山看看。李安的片子我一直比较崇尚。希望心情能好些。bless myself... </td> </tr> </table>
↑返回目录
前一篇: window.open的例子和使用方法以及参数说明
后一篇: 兼容低版本 IE 的 JScript 5.5 实现