0

我有一个以表格开头的页面。在该表单中,我呈现另一个称为信息的页面。在这个渲染中,我有另一个模态渲染。这种模态是另一种形式。所以此时我有一个嵌套形式。这适用于除 IE9 之外的所有浏览器。我认为 IE9 试图做的是它看到第二个表单何时结束,它也结束了第一个表单,所以嵌套表单之后的所有内容都被搞砸了。有没有其他人遇到过这个问题?你如何解决它?

父文件(表格):

= simple_form_for @form do |f|
    #the_form
        = render 'information', :f => f

        .buttons
            %input{:name => "submit", :type => "submit", :value => "SUBMIT"}
            %input{:name => "cancel", :type => "submit", :value => "Cancel"}

渲染信息文件:

#information
    %fieldset
        %legend
            Form Title
        = f.input :form_id, :url => form_name_path, :label => 'Field Name'
        = render 'modal'
    (the rest of the code here breaks)...

渲染模态文件:

.modal.hide.fade
    .modalBox
        %h3
            New Form Name
            %a{href: "#", class: "x", title: "Close" : 'data-dismiss' => "modal"}
        .diagRepeater
        .modal-body
            = simple_form_for Form.new, :url => {:controller => :form, :action => :modal_create} do |o|
                =o.input :name, :label => 'Name', :required => true
                =o.input :form_id, :as => :hidden

我在最后一个文件中看到了问题。如果我注释掉 simple_form_for 并继续,它会很好用。如果我离开它,它将破坏表格的其余部分。

4

1 回答 1

2

HTML 不支持嵌套表单。一个页面中可以有多个表单,但它们不应嵌套。正如你所说:这对我来说在所有浏览器中都很好用,这是奇迹,因为“你甚至会遇到问题让它在同一个浏览器的不同版本中工作”,所以避免使用它。

Webkit 解释为什么 HTML 不支持嵌套表单

bool HTMLParser::formCreateErrorCheck(Token* t, RefPtr<Node>& result)
{
    // Only create a new form if we're not already inside one.
    // This is consistent with other browsers' behavior.
    if (!m_currentFormElement) {
        m_currentFormElement = new HTMLFormElement(formTag, m_document);
        result = m_currentFormElement;
        pCloserCreateErrorCheck(t, result);
    }
    return false;
}
于 2014-10-09T07:40:59.783 回答