http://jsfiddle.net/adamadam123/gEEVM/4/
我正在构建一个允许用户添加表情符号的聊天系统。
就像上面的jsfiddler示例一样,我在textarea中获取当前文本,将其与所选的表情符号组合,然后将此文本添加回textarea。
$(function() {
var data = $('textarea').val();
var emoticon = ':)';
$('textarea').val(data + emoticon);
$('textarea').focus();
});
问题是当我将焦点设置回textarea时,光标位于文本的开头。
如何将光标设置为文本末尾 - 以便进一步输入?
答案 0 :(得分:33)
您可以做的一件事就是重置文本区域的值:
$(function() {
var data = $('textarea').val();
var emoticon = ':)';
$('textarea').focus().val('').val(data + emoticon);
});
答案 1 :(得分:9)
首先关注,然后设置值。就像这个JSFiddle
一样$('textarea').focus();
$('textarea').val("New Text");
另一种方法是在 .focus();
之后添加它$('textarea').val($('textarea').val() + ' ');
它在textarea的末尾添加了一个空格,从而集中在最后。
答案 2 :(得分:1)
非常简单的解决方案。
var emoticon = ':)';
var val = $('#textarea').val();
$('#textarea').select().val(val + emoticon);
答案 3 :(得分:0)
你应该回顾这个问题:
jQuery Set Cursor Position in Text Area
最优雅的JQuery解决方案:
$.fn.selectRange = function(start, end) {
return this.each(function() {
if (this.setSelectionRange) {
this.focus();
this.setSelectionRange(start, end);
} else if (this.createTextRange) {
var range = this.createTextRange();
range.collapse(true);
range.moveEnd('character', end);
range.moveStart('character', start);
range.select();
}
});
};
有了这个,你可以做到
$('#elem').selectRange(3,5);