脚本需要查找活动文本框并将字符插入该文本框中的Caret。该脚本还需要在IE和Firefox中工作。 Edit:
也可以在先前有效的文本框中插入“最后”字符。
我认为杰森·科恩(Jason Cohen)不正确。 当焦点丢失时,将保留套筒位置。:添加了我最初没有的firefox代码。]
[eDit:添加了代码以确定最新的活动文本框。]
首先,您可以使用每个文本框的Onblur事件将变量设置为“此”,以便您始终知道最新的活动文本框。然后,有一种IE的方法可以使光标位置也可以在Opera中起作用,而在Firefox中的一种更简单的方法。 在IE中,基本概念是使用文档。选择对象和upput
一些文本Into
选择。然后,使用索引,您可以获取添加的文本的位置。在Firefox中,有一种称为SelectionStart的方法,它将为您提供光标位置。
在您具有光标位置时,您会覆盖整个文本。文本在光标位置之前 +要在光标位置之后插入文本的文本
这里是一个示例,具有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合作。 我不知道如何重新放置光标,因此它停留在插入点。
在您的更新中:
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';
}
注意,如果用户按下按钮,则将重点放在文本框上,并且将不会有镜头位置!
Mytextarea.value='文本插入文本区域的文本介于此处';
我不确定您是否可以捕获Caret位置,但是,如果可以的话,可以使用文本框的
var lasttext;
function doinsert_ie() {
var ttInsert = "bla";
lasttext.focus();
var sel = document.selection.createRange();
sel.text = ttInsert;
sel.select();
}
function doinsert_ff() {
var oldtext = lasttext.value;
var curposS = lasttext.selectionStart;
var curposF = lasttext.selectionEnd;
pretext = oldtext.substring(0,curposS);
posttest = oldtext.substring(curposF,oldtext.length);
var ttInsert='bla';
lasttext.value = pretext + ttInsert + posttest;
lasttext.selectionStart=curposS+ttInsert.length;
lasttext.selectionEnd=curposS+ttInsert.length;
}