получить значение textarea из динамического dom при нажатии клавиши - PullRequest
0 голосов
/ 26 августа 2018

Я пытаюсь получить значение от динамически добавленных элементов dom, вдохновившись этим ответом:

Jquery .keypress на динамически добавляемом вводе

Мой код:

var commentbox = $('<div class=\"span6\"><textarea rows=\"1\" data-replyparent=\"'+replyparentid+'\" class="replytocomment" id=\"'+commentboxid+'\" style=\"display:none;\"></textarea></div>')
    .keypress (function (e) {
        var keyCode = e.keyCode || e.which;
        if (keyCode == 13) {
            console.log("it seems to work: "+ $(this).val());


            $.ajax({
                url: '/add/comment',
                type: 'POST',
                data: {
                    id: id,
                    parent: replyparentid,
                    comment: comment
                },
                success: function(){
                }
            });
        }
    })
    .insertAfter(placeholder)
;
//then insert the emojionearea after the placeholder
//$(commentbox).insertAfter(placeholder);
$('.replytocomment').emojioneArea({
    pickerPosition: "bottom",
    filtersPosition: "bottom",
    tonesStyle: "bullet"
});

Я не могу понять, как получить значение из текстовой области по коду 13, как это возможно при использовании его «inline».

В консоли я получаю только «это похоже на работу», но не значение из текстовой области.

Если я обновлю поле комментария var, чтобы в текстовой области было что-то вроде этого:

var commentbox = $('<div class=\"span6\"><textarea rows=\"1\" data-replyparent=\"'+replyparentid+'\" class="replytocomment" id=\"'+commentboxid+'\" style=\"display:none;\">TESTING</textarea></div>')

Работает с: $ (this) .find ('textarea'). Val ()

Так, я думаю, это может иметь какое-то отношение к слушателю? Хотя это выглядит немного странно, потому что, когда я регистрирую весь элемент следующим образом: console.log ($ (this) .find ('textarea')); На консоли отображается правильное обновленное значение в поле значений.

С уважением.

1 Ответ

0 голосов
/ 26 августа 2018

Событие устанавливается на обтекание div, а не textarea, поэтому this внутри eventhandler является div.Используйте $(this).find('textarea').val(), чтобы получить значение из textarea.

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