0

「Enter」キーを押してメッセージを投稿するために使用しているこのコードを使用していますが、ループが発生し、1つのメッセージを投稿する代わりに、ランダムに複数回投稿しています。

これは私が<input id='txtsendmsg" + i + "' placeholder=\"Write a comment...\" onkeypress='PostMessage(event,"+i+");' class='msgtxt'></input>助けを求めている機能です。

function PostMessage(event,key) {
    $('#txtsendmsg'+key).on("keypress", function (e) {
        if (e.which == 13) {
            var msgid = $(this).siblings('.msgid').val();
            var msgtxt = $(this).val();
            $.ajax({
                url: "student_post_login.aspx/funPostMessage",
                data: 'postd=' + "Y" + '&msgid=' + msgid + '&msgtxt=' + msgtxt,
                success: function (data) {
                    if (data) {
                        displayData();
                    }

                },
                failure: function (response) {
                    alert("Faliure:");
                },
                error: function (response) {
                    alert(response);
                }
            });
            e.preventDefault();
        }

    });
}
4

1 に答える 1

5

問題は、入力フィールドでキーを押すたびにイベント ハンドラーをアタッチしているためです。キーを 2 回押すと、2 つのリクエストが 3 回送信されます。3つなど。

onclick属性の代わりに jQuery のみを使用してハンドラーを割り当ててみてください。

<input id='txtsendmsg" + i + "' placeholder=\"Write a comment...\" class='msgtxt' />
$('.msgtxt').on('keypress', function (e) {
    var $el = $(this);
    if (e.which == 13) {
        var msgid = $el.siblings('.msgid').val();
        var msgtxt = $el.val();

        $.ajax({
            url: "student_post_login.aspx/funPostMessage",
            data: 'postd=' + "Y" + '&msgid=' + msgid + '&msgtxt=' + msgtxt,
            success: function (data) {
                if (data) {
                    displayData();
                }
            },
            failure: function (response) {
                alert("Faliure:");
            },
            error: function (response) {
                alert(response);
            }
        });
        e.preventDefault();
    }
});
于 2013-01-18T09:53:33.847 に答える