通过ajax调用将表单添加到html页面使表单不起作用(如果添加,否则它工作)

时间:2010-09-09 05:27:11

标签: jquery ruby-on-rails ajax

我正在通过类似形式的ajax调用添加ajax表单。新添加的表单不起作用。我正在使用rails 3和jquery。这是我的代码:

update.js.erb:/ *添加了一个可用于创建新Xyz的表单。提交添加的表单应使用执行create.js.erb * /

的create操作
$("#mytable tr:last").after("<%= escape_javascript(render 'shared/xyz', :object => Xyz.new)%> ");

create.js.erb:/ *添加了一个可用于编辑创建的xyz的表单。提交添加的表单应使用执行update.js.erb * /

的更新操作
$("#mytable tr:last").after("<%= escape_javascript(render 'shared/xyz', :object => @xyz)%> ");

表单shared / _xyz如下所示:

<tr>
<%= form_for(object, :remote => true) do |f| %>
<td>
    <%= f.check_box :completed  %>
</td>
<td>
    <%= f.text_field :name %>
</td>
<% end %>
</tr>

如果页面包含此表单(作为更新或创建操作)。此表单将按预期工作。但是,如果通过上述ajax调用将此表单添加到表中,则表单不起作用。表单将成功添加,它将显示正常。 css看起来不错。但是,表格不会提交任何内容。

我错过了什么吗?

由于

2 个答案:

答案 0 :(得分:0)

查看表单的源HTML,看起来是否符合预期?行动和方法是否正确?

答案 1 :(得分:0)

事实证明上面的代码适用于safari,显示但不适用于firefox 4 beta,甚至不能在firefox 3.6中显示。

Firefox不喜欢嵌套表中的表单元素。它也不像表格中的表格(如上面的代码)。 Firefox在自动更正例程中对此进行补偿,并在刷新整个页面时正确显示。然而,使用ajax,表单元素添加了javascript绕过该自动更正,因此它无法正确显示。

我离开了桌子,现在可以使用了

由于