0

当我用 jQuery 的 AJAX 方法添加我的评论时,我感到窒息,压力很大后,我想让这个文本框为空

我的 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

这是一个范围界定问题。thissuccess处理程序中保存对window对象的引用,而不是inputkeypress触发的对象。您只需要将 缓存input在您可以在success处理程序中使用的变量中。试试这个:

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 回答