代码之家  ›  专栏  ›  技术社区  ›  Nada Aldahleh

通过ajax调用将表单添加到html页面会使表单无法工作(如果添加了表单,则可以正常工作)

  •  0
  • Nada Aldahleh  · 技术社区  · 14 年前

    我通过一个类似表单的ajax调用添加了一个ajax表单。新添加的表单不起作用。我使用的是Rails3和jquery。这是我的代码:

    更新.js.erb:/Xyz可用于创建新表单。提交添加的表单应该使用执行的create操作创建.js.erb*/

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

    创建.js.erb:/*添加可用于编辑创建的xyz的窗体。提交添加的表单应该使用执行的更新操作更新.js.erb*/

    $("#mytable tr:last").after("<%= escape_javascript(render 'shared/xyz', :object => @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 回复  |  直到 14 年前
        1
  •  0
  •   Moin Zaman    14 年前

    看看表单的源HTML,它看起来像预期的那样吗?动作和方法正确吗?

        2
  •  0
  •   Nada Aldahleh    14 年前

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

    我离开了餐桌,现在它起作用了

    谢谢