从按键上的动态dom获取textarea值

时间:2018-08-26 11:28:09

标签: javascript jquery dom keypress

我正在尝试从动态添加的dom元素中获取价值,并从以下答案中获得启发:

Jquery .keypress on a dynamically added input

我的代码:

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的textarea中获取值,当“内联”使用它时,怎么可能呢?

在控制台中,我仅收到“似乎有效”的信息,而没有从文本区域得到的值。

如果我更新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')); 在控制台上,它在value字段中显示正确的更新值。

最诚挚的问候。

1 个答案:

答案 0 :(得分:2)

该事件是在包装div而不是textarea上设置的,因此this内的eventhandlerdiv。使用$(this).find('textarea').val()textarea获取值。