我正在使用带有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
魔法,并且表单会在整页重新加载时提交。有什么想法吗?
答案 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(' ');
这对我有用,你可以尝试一下。