【问题标题】:get textarea value from dynamic dom on keypress从按键上的动态 dom 获取 textarea 值
【发布时间】:2018-08-26 11:28:08
【问题描述】:

我正在尝试从动态添加的 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"
});

我不知道如何从 keycode 13 上的 textarea 获取值,这怎么可能,当使用它“内联”时。

在控制台中,我只得到“它似乎工作”,而不是文本区域的值。

如果我更新 var 评论框,在 textarea 中有一些东西,像这样:

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')); 对于控制台,它会在 valuefield 中显示正确的更新值。

最好的问候。

【问题讨论】:

标签: javascript jquery dom keypress


【解决方案1】:

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

【讨论】:

  • console.log("它似乎有效:"+ $(this).find('textarea').val());什么都不打印。 $(this).find('textarea')。打印:它似乎工作:[object Object]
  • 尝试e.target 而不是this。有什么变化吗?
  • $(e.target).find('textarea') 打印:它似乎工作:[object Object]
  • 我会尝试安慰$(this).find('textarea').attr('id')$(this).find('textarea').data('replyparent')。你得到textarea的数据了吗?
  • 它打印:“8003cddf-b09d-f0e0-8754-22f2807e0515”和“1”,这应该是正确的ID
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-21
  • 1970-01-01
  • 2021-11-09
  • 2021-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多