我有一个以表单开头的页面。在该表单中,我呈现另一个称为信息的页面。在这个渲染中我有一个模态的渲染。这种模式是另一种形式。所以在这一点上我有一个嵌套的形式。这适用于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和on,它会很好用。如果我离开它,它将打破表格的其余部分。
答案 0 :(得分: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;
}