Jquery textarea autogrow не работает при программном добавлении элементов - PullRequest
1 голос
/ 04 августа 2011

Я пробовал http://www.technoreply.com/autogrow-textarea-plugin-version-2-0/ и https://gist.github.com/802204#file_live_sample.js

Автогровь TextArea, и они отлично работают, если вы добавляете элементы с клавиатуры, но если вы добавляете элементы программно (скажем, по 1 новому элементу каждый)во-вторых) они не растут автоматически.

Кто-нибудь знает, как или где я могу найти autogro textarea, которое будет автоматически расти, если я добавлю новые элементы программно?(например, с $ ('# txtUDSMessagesNotHandled'). val ($ ('# textarea'). val () + 'новый текст +' \ n ');

Заранее спасибо. Гильермо.

1 Ответ

2 голосов
/ 04 августа 2011

В live-sample.js мы видим это:

$('.js-auto-grow').live('keyup keydown change', function(evt) {

Таким образом, плагин привязывается к трем событиям.Тебя волнует change.Дело в том, что когда вы говорите $('#x').val('pancakes'), событие change не вызывается.Поиграйте с этим:

http://jsfiddle.net/ambiguous/FPB4q/1/

, и вы увидите.Или из точного руководства :

change
Событие изменения происходит, когда элемент управления теряет фокус ввода и его значение было изменено сполучать фокус.Это событие действительно для INPUT, SELECT и TEXTAREA.element.

Когда вы просто вызываете $x.val('pancakes'), смена фокуса не происходит, поэтому событие change не запускается.

Все, что вам нужно сделать, - это запустить событие самостоятельно:

$('#txtUDSMessagesNotHandled')
    .val($('#textarea').val()+'new text + '\n')
    .change();

и тогда он должен работать нормально.

Также обратите внимание, что плагин требует, чтобы <textarea> имел атрибуты row и column, иначе он не будет работать,Вот демонстрация того, как это работает:

http://jsfiddle.net/ambiguous/Sr5gm/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...