Вставьте текст в текстовую область с jQuery

Поля не могут быть выставлены в интерфейсах. И авто-свойство может быть изменено на «нормальное» свойство в любое время, если это необходимо, без изменения сигнатуры и интерфейса класса.

Как правило, поля считаются деталями реализации, которые могут измениться в будущих версиях кода. Поэтому вы должны предоставлять данные через методы и свойства, оставляя возможность для внутренних изменений в будущем, которые не влияют на код, использующий класс.

150
задан gdoron is supporting Monica 19 February 2012 в 11:30
поделиться

7 ответов

Из того, что у вас есть в комментариях Джейсона, попробуйте:

$('a').click(function() //this will apply to all anchor tags
{ 
   $('#area').val('foobar'); //this puts the textarea for the id labeled 'area'
})

Edit- Чтобы добавить в текст, посмотрите ниже

$('a').click(function() //this will apply to all anchor tags
{ 
   $('#area').val($('#area').val()+'foobar'); 
})
123
ответ дан 23 November 2019 в 22:18
поделиться

То, что вы просите, должно быть достаточно простым в jQuery-

$(function() {
    $('#myAnchorId').click(function() { 
        var areaValue = $('#area').val();
        $('#area').val(areaValue + 'Whatever you want to enter');
    });
});

Лучший способ, который я могу придумать для выделения вставленного текста, - это заключить его в диапазон с классом CSS с background-color установите цвет по вашему выбору. На следующей вставке вы можете удалить класс из любых существующих промежутков (или отделить промежутки).

Однако на рынке доступно множество бесплатных редакторов WYSIWYG HTML / Rich Text, я уверен, что один из них подойдет ваши потребности

6
ответ дан 23 November 2019 в 22:18
поделиться

have you tried:

$("#yourAnchor").click(function () {
    $("#yourTextarea").val("your text");
});

not sure about autohighlighting, though.

EDIT:

To append:

$("#yourAnchor").click(function () {
    $("#yourTextarea").append("your text to append");
});
10
ответ дан 23 November 2019 в 22:18
поделиться

I use this function in my code:

$.fn.extend({ insertAtCaret: function(myValue) { this.each(function() { if (document.selection) { this.focus(); var sel = document.selection.createRange(); sel.text = myValue; this.focus(); } else if (this.selectionStart || this.selectionStart == '0') { 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(); } }); return this; } });
input{width:100px} label{display:block;margin:10px 0}
   

It's not 100% mine, I googled it somewhere and then tuned for mine app.

Usage: $('#element').insertAtCaret('text');

46
ответ дан 23 November 2019 в 22:18
поделиться

этот позволяет вам «вставлять» фрагмент текста в текстовое поле, вводить означает: добавляет текст туда, где находится курсор.

function inyectarTexto(elemento,valor){
 var elemento_dom=document.getElementsByName(elemento)[0];
 if(document.selection){
  elemento_dom.focus();
  sel=document.selection.createRange();
  sel.text=valor;
  return;
 }if(elemento_dom.selectionStart||elemento_dom.selectionStart=="0"){
  var t_start=elemento_dom.selectionStart;
  var t_end=elemento_dom.selectionEnd;
  var val_start=elemento_dom.value.substring(0,t_start);
  var val_end=elemento_dom.value.substring(t_end,elemento_dom.value.length);
  elemento_dom.value=val_start+valor+val_end;
 }else{
  elemento_dom.value+=valor;
 }
}

И вы можете использовать его так:

<a href="javascript:void(0);" onclick="inyectarTexto('nametField','hello world');" >Say hello world to text</a>

Забавно и имеет больше смысла, когда у нас есть функция «Вставить тег в текст».

работает во всех браузерах.

13
ответ дан 23 November 2019 в 22:18
поделиться

Я использовал это, и он отлично работает :)

$("#textarea").html("Put here your content");

Реми

0
ответ дан 23 November 2019 в 22:18
поделиться

Мне нравится расширение функции jQuery. Однако this относится к объекту jQuery, а не к объекту DOM. Поэтому я немного изменил его, чтобы сделать его еще лучше (можно обновлять сразу в нескольких текстовых полях / текстовых полях).

jQuery.fn.extend({
insertAtCaret: function(myValue){
  return this.each(function(i) {
    if (document.selection) {
      //For browsers like Internet Explorer
      this.focus();
      var 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();
    }
  });
}
});

Это действительно хорошо работает. Вы можете вставить сразу в несколько мест, например:

$('#element1, #element2, #element3, .class-of-elements').insertAtCaret('text');
186
ответ дан 23 November 2019 в 22:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: