Javascript 在当前carlet位置插入文本不工作(多个文本框)

Javascript 在当前carlet位置插入文本不工作(多个文本框),javascript,jquery,html,Javascript,Jquery,Html,我有两个文本框和一个按钮,如下所示: <input type="text" id="test1"> <input type="text" id="test2"> <input type="button" value="Click me" id="btn"> //按钮点击: $("#btn").click(function() { $('#test1').insertAtCaret("Some text"); }); 这里我手动定义文本框id,您可以

我有两个文本框和一个按钮,如下所示:

<input type="text" id="test1">
<input type="text" id="test2">
<input type="button" value="Click me" id="btn">
//按钮点击:

$("#btn").click(function()
{

 $('#test1').insertAtCaret("Some text");


});
这里我手动定义文本框id,您可以在我的代码中看到:

 $('#test1').insertAtCaret("Some text");
我需要以这样的方式插入值,即我的carlet position现在应该在哪个框中插入到该文本框中。我的意思是应该在当前carlet postiontest1或test2上插入该值,它不是固定的,可能会出现更多文本框

如何在当前carlet位置插入文本。请帮帮我,伙计们

在单击插入符号位置时检测,然后在同一位置插入一些文本的示例。我在控制台上记录插入符号的位置,这样应该可以给你一个插件的参考

这个例子


有几种方法可以找出哪个元素有焦点,最简单的是$document.activeElement,当使用jQuery时,请参阅和其他关于该主题的问题

但是,单击按钮会将焦点放在按钮元素上,从而丢失关于之前焦点元素的信息。要解决此问题,请向输入元素添加模糊事件处理程序,以便在模糊时,即失去焦点时,指向元素的指针存储在变量中。然后,您只需在希望插入文本时使用该变量。下面的代码以一种简单的方式实现了这一点,将insertcaret声明为一个函数,将要使用的元素作为一个参数传递,并使用一个全局变量;您可能希望修改该方法以满足您的编码理念或标准。此代码假定相关输入元素具有以test开头的id属性值,并且没有其他元素具有此类属性

函数insertcarelem,myValue{ 如果是文档选择{ //适用于Internet Explorer等浏览器 要素聚焦; var sel=document.selection.createRange; sel.text=myValue; 要素聚焦; } 如果elem.selectionStart | | elem.selectionStart=='0'{ //适用于基于Firefox和Webkit的浏览器 var startPos=elem.selectionStart; var endPos=elem.selectionEnd; var scrollTop=elem.scrollTop; elem.value=elem.value.substring0,startPos+myValue+elem.value.substringendPos,elem.value.length; 要素聚焦; elem.selectionStart=startPos+myValue.length; elem.selectionEnd=startPos+myValue.length; elem.scrollTop=scrollTop; }否则{ 元素值+=myValue; 要素聚焦; } } //按钮点击: 风险价值集中; $[id^=test].Blur函数 { wasFocused=这个; }; $btn.clickfunction { ifwasFocused{ 插图重点突出,一些文字; } };
您的代码引用了一个特定的元素,带有$'test1'。它没有试图做你所描述的。@JukkaK.Korpela yah,我需要将文本附加到插入符号位置,我无法提供Id!!在这里,你是硬编码的id为txt,在我的情况下,我也在做同样的事情,我需要得到插入符号的位置,我们不能知道之前。它可能位于任何文本框中,因此您不能提供id。它应该以动态方式工作,希望您理解,伙计!!
 $('#test1').insertAtCaret("Some text");
jQuery("#btn").on('click', function() {
    var caretPos = document.getElementById("txt").selectionStart;
    var textAreaTxt = jQuery("#txt").val();
    var txtToAdd = "more text";
    console.log(caretPos)
    jQuery("#txt").val(textAreaTxt.substring(0, caretPos) + txtToAdd + textAreaTxt.substring(caretPos) );
});