我想在文本框中的插入符中插入一些特殊字符,使用
javascript上的按钮.如何才能做到这一点?
该脚本需要找到活动的文本框,并将字符插入该文本框中的插入符.该脚本还需要在IE和Firefox中工作.
编辑:在以前活动的文本框中插入“last”字符也是可以的.
解决方法
我认为杰森·科恩是错误的.当焦点丢失时,插入位置被保留.
首先,您可以使用每个文本框的onBlur事件将变量设置为“this”,以便始终知道最近的活动文本框.
然后,有一种IE方法来获取也可以在Opera中使用的光标位置,并且在Firefox中更容易.
在IE中,基本概念是使用document.selection对象并将一些文本放入选择.然后,使用indexOf,您可以获取添加的文本的位置.
在FireFox中,有一个名为selectionStart的方法可以给你光标的位置.
一旦你有光标位置,你将覆盖整个text.value
光标前面的文本位置将要在光标位置后插入文本的文本
以下是IE和FireFox的独立链接的示例.您可以使用您最喜欢的浏览器检测方法来确定要运行的代码.
<html><head></head><body> <script language="JavaScript"> <!-- var lasttext; function doinsert_ie() { var oldtext = lasttext.value; var marker = "##MARKER##"; lasttext.focus(); var sel = document.selection.createRange(); sel.text = marker; var tmptext = lasttext.value; var curpos = tmptext.indexOf(marker); pretext = oldtext.substring(0,curpos); posttest = oldtext.substring(curpos,oldtext.length); lasttext.value = pretext + "|" + posttest; } function doinsert_ff() { var oldtext = lasttext.value; var curpos = lasttext.selectionStart; pretext = oldtext.substring(0,oldtext.length); lasttext.value = pretext + "|" + posttest; } --> </script> <form name="testform"> <input type="text" name="testtext1" onBlur="lasttext=this;"> <input type="text" name="testtext2" onBlur="lasttext=this;"> <input type="text" name="testtext3" onBlur="lasttext=this;"> </form> <a href="#" onClick="doinsert_ie();">Insert IE</a> <br> <a href="#" onClick="doinsert_ff();">Insert FF</a> </body></html>
这也将与文本区域一起使用.我不知道如何重新定位光标,使其停留在插入点.