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 リクエストを送信するだけで、ウィンドウの場所をまったく変更したり、更新するように指示したりしていません。

コメントフォーム内に送信ボタンはありますか?その場合、ユーザーが Enter キーを押したときにアクティブ化されている可能性があります。e.preventDefault()ハンドラー関数に渡されたイベントが通常のアクションを実行しないようにするために呼び出す必要があります。具体的には、Enter キーのみの処理内でそれを呼び出す必要があります。つまり、次のようになります。

$('#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 に答える