我正在尝试从动态添加的dom元素中获取值,灵感来自以下答案:
Jquery .keypress on a dynamic add 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 的文本区域中获取值,当"内联"使用它时,这怎么可能。
在控制台中,我只得到"它似乎有效",但没有从文本区域获得值。
如果我更新 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'((; 在控制台上,它在值字段中显示正确的更新值。
此致敬意。
事件设置在包装div
上,而不是textarea
上,所以eventhandler
里面this
是div
。使用$(this).find('textarea').val()
从textarea
获取值。