我正在尝试从动态添加的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字段中显示正确的更新值。
最诚挚的问候。
答案 0 :(得分:2)
该事件是在包装div
而不是textarea
上设置的,因此this
内的eventhandler
是div
。使用$(this).find('textarea').val()
从textarea
获取值。