2016-03-14 56 views
0

我试图做一个网站,我可以回复一些消息时,jQuery中生成textarea时,单击前一个“答复”按钮。然后显示一个按钮来发送消息(使用Ajax),但现在我无法获得textarea的值,即使尝试使用不同的id,因为每个消息都有一个数字。使用jquery和按钮中生成的textarea错误

$(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()是空的。我也尝试在第一次之外放置第二次点击(),但是然后点击()不起作用。

任何人之前都有过这个问题,因为我已经尝试了很多东西,没有任何工作。

更新,以使其更容易理解:

  • class_reply值正常工作。测试
  • 此函数在onready()函数内。

功能的工作原理如下:

  1. 不同的消息,这 从jquery的加载(甚至HTML代码)的列表。
  2. 当点击一条消息时会显示完整的消息预览和一个按钮来回复。
  3. 当你点击按钮时加载了这个功能。
  4. 函数被加载(显示textarea和low按钮),但是当你点击生成的新按钮时,输入值(textarea和 输入字段)不显示任何值。

回答

0

尝试用这个做到这一点:

$(document).on('click', 'element', function(){}); 
+0

我已经尝试过在第一次单击()内部和外部并且不显示textarea值。即使我已经在'$(document).ready(function(){' – CapAm

0

我不认为什么是错与您检索textarea的文本的方式。

在这个小提琴https://jsfiddle.net/jahnestacado/y3gLtLv4/1/我唯一改变的是class_reply变量。我给它一个固定的价值。所以当你尝试检索匹配的值时可能会出现问题。 如果你console.log clas_reply变量它打印什么?

+0

)之外尝试过了,我已经试过了你的小提琴并按预期工作,我试图展示class_reply,并且也在我的jquery中工作,但是不显示输入的textarea和输入值我不知道问题出在哪里 – CapAm

0

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

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

即使使用textarea和一个测试输入也是空的,输入的值不会显示任何内容 – CapAm