0

我正在尝试在不使用以下代码刷新页面的情况下发布我的评论区,但无论如何它都会刷新。我试过把 return false; 无处不在,但什么都没有。有我看不到的明显问题吗?

    $('#commentForm').keydown(function(e) {
    if (e.keyCode == 13) {
        var songComment = $("#songComment").val();
        var username = $("#username").val();
        var comid = $("#comid").val();
        var dataString = 'songComment=' + songComment + '&username=' + username + '&comid=' + comid;
        if(dataString=='' || songComment=='' || username=='' || comid=='')
        {
            $('.success').fadeOut(200).hide();
            $('.error').fadeOut(200).show();
        }
        else
        {
            $.ajax
            ({
                type: "POST",
                url: "comment.php",
                data: dataString,
                success: function(){
                    $('.success').fadeIn(200).show();
                    $('.error').fadeOut(200).hide();
                }
            });
        }
        return false;
    };
});
4

1 回答 1

2

那里没有任何东西会导致页面刷新。您只是提交了一个 AJAX 请求,根本没有改变窗口位置,也没有告诉它刷新。

您的评论表单中有提交按钮吗?如果是这样,它可能在用户按下回车时被激活。您需要调用e.preventDefault()以防止传递给您的处理函数的事件采取正常的行动。具体来说,您只需要处理回车键时调用它,即:

$('#commentForm').keydown(function(e) {
    if (e.keyCode == 13) {
        e.preventDefault();
        // do stuff in response to enter key being pressed
    }
}

否则,您将停止所有击键操作

当然,如果在调用事件处理程序之前激活了提交按钮,这可能对您没有帮助。考虑只使用不是提交按钮的常规按钮:使用具有button类型的按钮输入元素。

于 2013-06-18T04:09:25.400 回答