提交后清除Rails远程表单

时间:2011-05-19 02:07:38

标签: jquery ruby-on-rails

我正在使用带有jQuery的Rails 3,并且有一个带有单个文本输入和提交按钮的简单表单。我提交的表单是:remote => true,并希望在提交表单后清除输入。我试过这个jQuery代码:

$('#new_message').submit(function() {
  $('#message_content').val('');
});

但是,这会在提交表单之前清除输入,因此我最终会提交一个空白表单。

在搜索了一下之后,我也尝试了以下版本:

$('#new_message').submit(function(e) {
  e.preventDefault();
  this.submit();
  $('#message_content').val('');
});

...但是这似乎会覆盖:remote => true魔法,并且表单会在整页重新加载时提交。有什么想法吗?

5 个答案:

答案 0 :(得分:21)

当为标记为remote => true的表单按下提交按钮时,rails.js中的javascript代码执行submit()。您无需覆盖该功能。

请在$(document).ready -

中尝试此操作

(编辑:使用bind代替live。感谢Darren Hicks。)

$("#new_message").bind("ajax:complete", function(event,xhr,status){
  $('#message_content').val('');
}

这会为ajax:complete事件添加事件处理程序。完成ajax-submit-form后会触发此事件。更多here

答案 1 :(得分:1)

操作 .js.erb文件中

$('#message_content').attr('value','');

其中操作是控制器中的方法名称(您未在问题中说明)

答案 2 :(得分:0)

在您的jquery函数中,通过get()自行提交。调用get()后,将文本字段设置为空白。或者,您可以在为get()提供的成功回调中执行此操作,这将允许您从控制器获取一些信息,例如提交的文本字段值是否可接受。

答案 3 :(得分:0)

你可以像这样触发Rails AJAX提交:

$(this).trigger('submit.rails');

答案 4 :(得分:0)

在你的model.js文件中

               $('#element_id').val(' ');

这对我有用,你可以尝试一下。