我有一个带有手工制作按钮的遥控表格。我在表单标签中使用data-remote = true,但我不知道如何使用link标签在表单提交中发布表单数据。当我使用data-remote和data-method时,它会创建一个带有空参数的远程调用,所以我不会将submit()函数调用到我的表单。
我的表格是:
<form accept-charset="UTF-8" action="/tasks" data-remote="true" method="post">
我在表单标记下的链接标记是:
它使用空POST参数创建远程调用:
<a class='minibutton' data-remote='create' href='/tasks/create' data-method='post'>
它不发送任何POST信息,只发送标题:
<a class='minibutton' data-remote='create' href='/tasks/create'>
如何调用优雅的表单的submit()方法?我想我不需要创建javascript hacks来使它工作。我吗?
答案 0 :(得分:2)
我想有两种方法可以解决它:
1。
我看到你在你的链接上使用了一个名为'minibutton'的类,这表明你希望它看起来像一个按钮。因此,请使用表单中的按钮标记代替链接(或<input type="submit">
标记):
<button type="submit" value="Submit">
使用CSS根据自己的喜好设计样式。你甚至可以在它们上面使用图标。查看this blog post了解详细信息和准备使用的CSS代码块。
2。 如果您仍想使用该链接,可以在链接和表单上设置“id”属性,并添加一个单击事件观察器以提交表单。 假设您正在使用Prototype,请将类似的内容放入页面的头部:
<%= javascript_tag do %>
$('YOUR-LINK-ID').observe(
'click',
function(el, value) {
$('YOUR-FORM-ID').request({
onSuccess: function(response) {eval(response)}
})
}
);
<% end %>
这是假设您的回复内容类型是text / javascript。如果不是,则必须使用onSuccess和/或onComplete回调来用响应内容替换页面。
有关观察和提交表单的详细信息,请参阅Form.request和Event.observe上的文档。
This question也可能有所帮助。