2016-03-14 30 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