Ответ 1
Что-то простое, что вы можете сделать, это reset значение текстовой области:
$(function() {
var data = $('textarea').val();
var emoticon = ':)';
$('textarea').focus().val('').val(data + emoticon);
});
http://jsfiddle.net/adamadam123/gEEVM/4/
Я создаю чат-систему, которая позволяет пользователям добавлять смайлики.
Как и в примере jsfiddler выше, я беру текущий текст в текстовом поле, объединяю его с выбранным символом смайлика, а затем добавляю этот текст обратно в текстовое поле.
$(function() {
var data = $('textarea').val();
var emoticon = ':)';
$('textarea').val(data + emoticon);
$('textarea').focus();
});
Проблема заключается в том, что я устанавливаю фокус обратно в текстовое поле, курсор находится в начале текста.
Как я могу установить курсор в конец текста - чтобы разрешить дальнейшую ввод?
Что-то простое, что вы можете сделать, это reset значение текстовой области:
$(function() {
var data = $('textarea').val();
var emoticon = ':)';
$('textarea').focus().val('').val(data + emoticon);
});
Сначала сфокусируйтесь, затем установите значение. Точно так же JSFiddle
$('textarea').focus();
$('textarea').val("New Text");
Другой способ - добавить это после .focus();
$('textarea').val($('textarea').val() + ' ');
Он добавляет пробел в конец текстового поля, таким образом, фокусируется в конце.
A очень простое решение.
var emoticon = ':)';
var val = $('#textarea').val();
$('#textarea').select().val(val + emoticon);
Вы должны рассмотреть этот вопрос:
jQuery Установить положение курсора в текстовой области
Самое изящное решение 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);