我有一个包含很多文本框的页面.当有人点击链接时,我希望在光标所在的位置插入一两个字,或者将其附加到具有焦点的文本框中.
例如,如果光标/焦点在文本框上,说"苹果",并且他点击了一个"[email]"的链接,那么我希望文本框说'apple bob@example.com'.
我怎样才能做到这一点?这是否可能,因为如果重点是收音机/下拉/非文本框元素怎么办?可以记住最后关注文本框的内容吗?
我想知道如何在点击锚标签时使用jquery将文本插入文本区域.
我不想替换textarea中的文本,我想将新文本追加到textarea.
我已经浏览了网络上的解决方案,还有一些,但它们似乎都将代码拆分为支持IE和Firefox.我想知道是否有更优雅的方式可以在每个浏览器上工作,在文本区域的光标处插入一些文本.
非常感谢,
丰富
我在这里找到了JQuery InsertAtCaret函数但是没有给出如何使用它的细节.我已经尝试了很多,以了解如何使用它,但找不到任何方法.这是功能.
$.fn.insertAtCaret = function(myValue) {
return this.each(function() {
var me = this;
if (document.selection) { // IE
me.focus();
sel = document.selection.createRange();
sel.text = myValue;
me.focus();
} else if (me.selectionStart || me.selectionStart == '0') { // Real browsers
var startPos = me.selectionStart, endPos = me.selectionEnd, scrollTop = me.scrollTop;
me.value = me.value.substring(0, startPos) + myValue + me.value.substring(endPos, me.value.length);
me.focus();
me.selectionStart = startPos + myValue.length;
me.selectionEnd = startPos + myValue.length;
me.scrollTop = scrollTop;
} else {
me.value += myValue;
me.focus(); …Run Code Online (Sandbox Code Playgroud) 这个问题归结为需要<textarea>在指令中获取元素的光标位置.简而言之,我需要在此工作.
var position = element.selectionStart;
Run Code Online (Sandbox Code Playgroud)
关于主题至少有5个答案使用各种方法,例如这个用于角度,这个用于一些jQuery扩展,在这里输入链接描述.
我已经阅读了所有内容,并决定尝试获取选择开始对象.这是我的PLNKR.我不知道我做错了什么.注意 - 背景改变的东西是看我是否选择了正确的元素,我就是这样.这里编辑是失败的代码片段:
link: function(scope, elem, attrs) {
var textArea = elem.find("#itemTextArea");
textArea.bind('click', function() {
//This gets to undefined, even though selectionStart is a property of textarea*
scope.testValue = elem.selectionStart;
});
},
Run Code Online (Sandbox Code Playgroud)
*https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Property/selectionStart
PS单击文本区域以立即知道指令中发生了什么.