如何在ajax表单提交事件之前清除文本框文本?

时间:2012-03-29 15:30:44

标签: asp.net-mvc jquery

我希望在ajax发布后清除文本框。

<div style="padding: 5px; background-color: Silver;">
@using (Ajax.BeginForm("_MessagesPartial", "Chat", new AjaxOptions { UpdateTargetId = Model.room_id.ToString() }))
  {
    <div style="padding: 5px 15px 5px 5px;">
        @Html.TextBox("textbox_message", null, new { @class = "text_yorum", id = "text_box_chat" })
        @Html.Hidden("oda_id", Model.room_id)
    </div>
  }
</div>

<div id="@Model.room_id" style="height:400px;overflow-y:scroll;position: relative;">
    @Html.Action("_MessagesPartial", "Chat", new { room_id = Model.room_id })
</div>

有很多例子,但它们不起作用。我已经使用了这段代码,但速度太慢了。

$("form").submit(function () {
   $.get('@Url.Action("_MessagesPartial", "Chat", new { room_id = Model.room_id }) ', {}, function (view) {
       $("#@Model.room_id").html(view);
       $("#text_box_chat").val("");
   });
});

有没有办法做到这一点。

2 个答案:

答案 0 :(得分:0)

您似乎正在发送2个AJAX请求。一个由Ajax.BeginForm帮助程序发送,一个在自定义.submit处理程序中。您可以指定在AjaxOptions中完成AJAX请求后执行的回调:

@using (Ajax.BeginForm("_MessagesPartial", "Chat", new AjaxOptions { UpdateTargetId = Model.room_id.ToString(), OnSuccess = "onSuccess" }))
{
    ...
}

并清除此回调中的输入:

function onSuccess() {
    $("#text_box_chat").val("");    
}

您不需要像您一样订阅表单的.submit事件并发送AJAX请求。这就是Ajax.BeginForm助手已经做的事情。

答案 1 :(得分:0)

我通常使用Ajax函数。但无论如何我相信你的问题的关键是你没有成功的功能。尝试这样的事情。

 $.ajax({
        url: 'yourfile.php',
        type: 'POST',
        success: function() {

          $('#myform input').val("");

        }
 });