如何使用jquery从指针的当前位置向文本框添加文本?

我有一个带有一些单词和文本的文本框。我想要做的是当用户点击一个按钮时,从指针的当前位置向文本框的文本添加一些单词。如何做到这一点? 这是文本框和按钮:

  

非常巧合,我几分钟前回答了一个类似的问题 。 您可以使用这样的自定义函数:

 jQuery.fn.extend({ insertAtCaret: function(myValue){ return this.each(function(i) { if (document.selection) { //For browsers like Internet Explorer this.focus(); sel = document.selection.createRange(); sel.text = myValue; this.focus(); } else if (this.selectionStart || this.selectionStart == '0') { //For browsers like Firefox and Webkit based var startPos = this.selectionStart; var endPos = this.selectionEnd; var scrollTop = this.scrollTop; this.value = this.value.substring(0, startPos)+myValue+this.value.substring(endPos,this.value.length); this.focus(); this.selectionStart = startPos + myValue.length; this.selectionEnd = startPos + myValue.length; this.scrollTop = scrollTop; } else { this.value += myValue; this.focus(); } }) } }); 

基本上,这个插件允许您在多个textboxtextarea插入符号处插入一段textarea 。 你可以像这样使用它:

  $('#element1, #element2, #element3, .class-of-elements').insertAtCaret('text'); 

工作演示

也许更短的版本, http://jsfiddle.net/NaHTw/4/会更容易理解?

 jQuery("#btn").on('click', function() { var caretPos = document.getElementById("txt").selectionStart; var textAreaTxt = jQuery("#txt").val(); var txtToAdd = "stuff"; jQuery("#txt").val(textAreaTxt.substring(0, caretPos) + txtToAdd + textAreaTxt.substring(caretPos) ); });