0

jQuery の AJAX メソッドでコメントを追加すると首が絞められます。ストレスが溜まった後、このテキストボックスを null にしたいです。

このような私のAjaxメソッド:

function AddComments() {
            $(".Comment input[type=text]").keypress(function (e) {
                if (e.which == 13) {
                    var comment = $("#" + this.id).val();
                    var textId = "#" + this.id.replace("txt", "div");
                    $(textId).append(comment);
                    $.ajax({
                        type: "POST",
                        url: "Posts.aspx/AddComments",
                        data: "{'id': '" + this.id.replace("txt", "") + "','comments': '" + comment + "'}",
                        dataType: "json",
                        contentType: "application/json",
                        success: function (response) {
                            $("#" + this.id).val("");
                            //alert(response.d);
                        }
                    });
                }
            });
        }

私が欲しいのは成功であり、現在のテキストボックスをNULLにしたい

$("#" + this.id).val("");
4

3 に答える 3

1

これはスコープの問題です。ハンドラーthisでは、起動されたではなく、オブジェクトへの参照を保持します。ハンドラーで使用できる変数にキャッシュするだけです。これを試して:successwindowinputkeypressinputsuccess

function AddComments() {
    $(".Comment input[type=text]").keypress(function (e) {
        if (e.which == 13) {
            var $input = $(this);
            var comment = $input.val();
            var textId = "#" + this.id.replace("txt", "div");

            $(textId).append(comment);
            $.ajax({
                type: "POST",
                url: "Posts.aspx/AddComments",
                data: "{'id': '" + this.id.replace("txt", "") + "','comments': '" + comment + "'}",
                dataType: "json",
                contentType: "application/json",
                success: function (response) {
                    $input.val("");
                    //alert(response.d);
                }
            });
        }
    });
}
于 2012-11-07T13:15:02.817 に答える
0

jquery ajaxでこれにアクセスすることはできません。このようにして、オブジェクトを任意の変数に保存します

function AddComments() {
            $(".Comment input[type=text]").keypress(function (e) {
                if (e.which == 13) {
                    var Element=this;
                    var comment = $("#" + this.id).val();
                    var textId = "#" + this.id.replace("txt", "div");
                    $(textId).append(comment);
                    $.ajax({
                        type: "POST",
                        url: "Posts.aspx/AddComments",
                        data: "{'id': '" + this.id.replace("txt", "") + "','comments': '" + comment + "'}",
                        dataType: "json",
                        contentType: "application/json",
                        success: function (response) {
                            $(Element).val("");
                            //alert(response.d);
                        }
                    });
                }
            });
        }
于 2012-11-07T13:14:03.880 に答える
-1

成功関数は別のコンテキストにあります。これを使用することはできません。json 応答で ID を送信し、次のようにする必要があります。

success: function (response) {
  $('#'+response.div_id).val("");
}

json 応答には、ajax 要求で渡された div_id が含まれている必要があります

于 2012-11-07T13:17:29.610 に答える