【问题标题】:HTML: Risk of using nested <form>s?HTML:使用嵌套 <form> 的风险?
【发布时间】:2011-05-11 02:38:22
【问题描述】:

使用此布局是否存在浏览器兼容性问题

<form action="javascript:alert('error on submit outer')" onsubmit="submitOuterScriptedForm(this); return false">
  <input name="field1"/>
  <form action="javascript:alert('error on submit inner')" onsubmit="submitInnerScriptedForm(this); return false">
    <input name="field1"/>
    <button type="submit">Click here for JavaScript mini-form</button>
  </form>
  <input name="field2"/>
  <button type="submit">Click here to submit JavaScript main form</button>
</form>

预期结果

  • 在第二个输入中按 enter 或单击第一个按钮会触发内部表单的 onsubmit。
  • 在第一个或第三个输入中按 enter 或单击最后一个按钮会触发外部表单的 onsubmit。

【问题讨论】:

    标签: html forms cross-browser


    【解决方案1】:

    它不是有效的 HTML。

    你不能嵌套表单标签。

    来自DTD and spec

    <!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- interactive form -->
    

    -(FORM) 明确禁止嵌套表单。

    预期结果:W3 验证服务中的验证错误。

    浏览器预期结果:未定义的行为。

    【讨论】:

      【解决方案2】:

      我昨天不小心碰到了这个。在 Safari 中,内部表单标签的“method”属性被忽略,内部表单的提交按钮使用外部表单的方法提交。简而言之,不要这样做。

      【讨论】:

      • Opera、firefox 和 IE 的表现如何?同样的方式?
      猜你喜欢
      • 2012-07-01
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      • 2013-03-23
      • 2016-05-30
      • 1970-01-01
      相关资源
      最近更新 更多