問題は、入力ボックスにコメントを書き込んだ後にEnterキーを押すと、メッセージがDBに送信され、Ajax呼び出しによって取得されることです。
入力フィールドのフォーカスを外してからもう一度フォーカスを合わせ、新しいメッセージの入力を開始してEnterキーを押すと、メッセージが2回送信され、もう一度行うと、メッセージが3回送信されます。コードの何が問題になっていますか?どうすればこれを解決できますか?
$(".type_comment").click(function(){
container = $(this);
if ($(this).val() == "Type a comment.")
{
$(this).val("");
$(this).css({ 'font-size':'13px','opacity':'1' });
}
nr_crt = container.attr("nr_crt");
container.keyup(function(e)
{
code = (e.keyCode ? e.keyCode : e.which);
if (code == 13)
{
var chatmsg = container.val();
var comment_id = $("#main-photo"+nr_crt).attr("commentid");
var name = <?php echo json_encode($_SESSION['username']); ?>;
$.post('../utility/postcomment.php', { comment: chatmsg, name: name, comment_id: comment_id } ,
function(output) {
});
code = null;
chatmsg = "";
container.val("");
var time = setTimeout(function(){
$.post('../utility/fetchcomments.php', { comment_id : comment_id , name : name} ,
function(results) {
$(".comment_append"+nr_crt).append(results);
});
clearTimeout(time);
},500);
}
});
});