使用在 jquery 和按钮中生成的文本区域时出错

Error using textarea generated in jquery and buttons

本文关键字:文本 区域 出错 jquery 按钮      更新时间:2023-09-26

我正在尝试创建一个可以回复一些消息的网站,当单击以前的"回复"按钮时,文本区域会在jquery中生成。然后显示一个按钮来发送消息(使用 Ajax),但现在我无法获取文本区域的值,即使尝试使用不同的 id,因为每条消息都有一个数字。

$(document).ready(function() {
//Reply messages
    $(".reply-btn").click(function() { //Clicking reply button on message list          
        var class_reply = this.className.match(/btn_('d+)/)[1];
        $( ".panel-body" ).prepend( '<div class="main-reply-msg"></div>' );
            $( ".main-reply-msg" ).append( '<textarea class="message_replied" id="message_replied_'+class_reply+'" rows="10" cols="300" style="max-width: 100%;"></textarea>' );
        $( ".main-reply-msg" ).append( '<a href="#" class="btn btn-primary reply-msg-conv" style="width:100%;" role="button">Reply</a>' );
        $( ".main-reply-msg" ).append( '<hr>' );
    $(".reply-msg-conv").click(function() { //Sending the reply
        message_replied_txt = $('.message_replied').val();
        console.log(message_replied_txt);
    });
   });
});

这就是代码,我正在尝试使其工作,第二次单击有效,但 textarea.val() 为空。我还尝试将第二个 click() 放在第一个之外,但随后 click() 不起作用。

以前任何人都遇到过这个问题,因为我尝试了很多东西,但没有任何效果。

更新以使其更易于理解:

  • class_reply的值工作正常。
  • 此函数位于 onready() 函数中。

该函数的工作原理如下:

  1. 不同消息的列表,其中从jQuery加载(甚至是HTML代码)。
  2. 单击消息时,将显示完整的消息预览和回复按钮。
  3. 当您单击按钮时,将加载此功能。
  4. 该函数已加载(显示文本区域和低按钮),但是当您单击新按钮时,会生成输入的值(文本区域和输入字段)不显示任何值。

尝试这样做:

$(document).on('click', 'element', function(){});
我不

认为您从文本区域检索文本的方式有问题。

在这个小提琴 https://jsfiddle.net/jahnestacado/y3gLtLv4/1/中,我唯一改变的是class_reply变量。我给了它一个固定的值。因此,当您尝试检索匹配的值时,可能会出现问题。如果控制台.log clas_reply变量会打印什么?

$(".reply-msg-conv") 对象上的单击事件将不起作用,因为它是从运行时追加的。您将需要功能来触发点击。

$(document).on("click", ".reply-msg-conv", function(){
  //your click function
})