如何使用javascript在插入符号中插入字符?
我想在按钮上使用javascript在文本框内的插入符号中插入一些特殊字符。如何才能做到这一点?
该脚本需要找到活动的文本框,并在该文本框中的插入符号处插入字符。该脚本还需要在IE和Firefox中运行。
编辑:也可以在先前活动的文本框中插入字符" last"。
解决方案
回答
请注意,如果用户按下按钮,则文本框上的焦点将丢失,并且没有插入符号的位置!
回答
遍历所有输入字段...
找到一个有重点的人。
然后当我们拥有文字区域时...
我们应该能够执行类似...
myTextArea.value ='要插入文本区域的文本在这里';
回答
我不确定是否可以捕获插入符号的位置,但是如果可以,可以通过使用文本框的onblur事件捕获位置(相对于字符串)来避免Jason Cohen的担心。
回答
根据更新:
var inputs = document.getElementsByTagName('input'); var lastTextBox = null; for(var i = 0; i < inputs.length; i++) { if(inputs[i].getAttribute('type') == 'text') { inputs[i].onfocus = function() { lastTextBox = this; } } } var button = document.getElementById("YOURBUTTONID"); button.onclick = function() { lastTextBox.value += 'PUTYOURTEXTHERE'; }
回答
我认为杰森·科恩(Jason Cohen)是不正确的。失去焦点时,插入符号的位置将保留。
[编辑:添加了我最初没有的FireFox代码。]
[编辑:添加了确定最新活动文本框的代码。]
首先,可以使用每个文本框的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,curpos); posttest = oldtext.substring(curpos,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>
这也适用于textareas。我不知道如何重新定位光标,使其停留在插入点。