0

jqueryでテキストエリアを動的に生成した後、このテキストエリアの値を取得してログに記録しようとしましたが、これは最初に試したときに機能しますが、2回目、3回目などは値が空白のままです。理由はわかりませんが、このテキストエリアの新しい値を取得するのは、ページを更新するときだけです。

$(document).on('click','.messager',function(e){
        e.preventDefault();
        $('body').append("<div class='messageSender'>"
                +"<div class='colr' id='content'>"
                        +"<button id='modal-close'>Close Window</button>"
                        +"<button id='modal-send'>Send Message</button><br /><br /><br />"
                        +"<label for='messageUser'><font size='5'>Message:</font></label>"
                        +"<textarea id='messageUser' maxlength='1400'> </textarea>"
                    +"</div></div>");
 });

値をログに記録しようとする場所

$(document).on('click','#modal-send',function(e){
    e.preventDefault();
    var msg = $("#messageUser").val();
    console.log(msg);


            $.post("sendMessage.php", { request: "sendMsg"},
            function(data) { 
                                $("#messageUser").val("");
                                $(".messageSender").hide();
                                $(".modal").hide();
                            alert("Message Sent Successfully")  
            });
    return false;   
});
4

1 に答える 1

0

markpsmithが言及したように、それはある種の「拘束力のある問題」であることが判明しました。メッセージが送信された後、.remove() メソッドを使用して div と textarea を完全に削除する必要がありました。そうしないと、メッセージの送信をクリックするたびに新しいテキストエリアが追加されるため、メッセージ値が設定された初期値のままになります。

           $(document).on('click','#modal-send',function(e){
e.preventDefault();
var msg = $("#messageUser").val();
console.log(msg);


        $.post("sendMessage.php", { request: "sendMsg"},
        function(data) { 
                            $("#messageUser").remove();
                                $(".messageSender").remove();
                                $("#content").remove();
                        alert("Message Sent Successfully")  
        });
return false;   

});

于 2013-01-15T17:06:12.710 に答える