입력 상자에 설명을 쓰고 Enter 키를 누르면 메시지가 DB로 전송 된 다음 Ajax 호출로 검색됩니다.이전 키 누르기 이벤트 취소하기
모든 것이 잘 들어갑니다. 입력 필드에 초점이 맞지 않으면 다시 초점을 맞추고 새 메시지를 입력하고 Enter 키를 누른 다음 메시지가 두 번 전송됩니다. 메시지를 다시 보내면 메시지가 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);
}
});
});
가 나쁜 그러나
, 당신의 설명에 따라, 가장 가능성이 당신이 원하는 무엇인가 아이디어, 그리고 당신은 정확하게 그것을하고 있습니다. –
'.type_comment'를 누를 때마다 새로운 keyup 핸들러가 추가됩니다. 클릭 연결을 해제하거나 클릭 핸들러 외부에서 키 업 기능을 한 번만 설정해야합니다. – czarchaic
글쎄 '.click'함수 외부에 'keyup'함수를 넣으려고했지만 컨테이너 변수가 인식되지 않습니다. – southpaw93