提交嵌套表单,奇怪的行为

时间:2010-06-16 21:22:58

标签: javascript html forms javascript-events nested-forms

我有一个包含表单的广告横幅,第三方网站所有者使用此横幅抓取此代码,并在该网站上显示此横幅。

由于某些使用此横幅的网站在整个网站上都有<form>包装,我发现横幅表单不提交,而是提交外部表单。

以下是代码:

  <form onSubmit="return alert('outer form submitted')">

    <!-- only if i add this empty form it submits the inner -->
         <form></form>
    <!-- End Empty form -->

    <!-- inner form -->
      <form onSubmit="return alert('inner form submitted')" > 
           <input type="submit" /> 
      </form> 
    <!--end  inner form -->

 </form> 

正如您所看到的那样,只有在内部<form>之前添加空<form>时,它才会提醒(提交)内部,否则它会提交外部。

为具有表单的网站编写横幅广告的最佳方法是什么?

1 个答案:

答案 0 :(得分:9)

拥有&lt; form&gt;在&lt; form&gt;内格式错误的HTML,所有赌注都是关闭任何浏览器/用户代理/ javascript-engine / dom实现将如何处理它。不同访客之间的结果会有很大差异或相同。只是没有&lt; form&gt;在&lt; form&gt;中期间:)

您观察到的行为中最有可能出现的情况:启动&lt; form&gt;表单内的标签可能被“丢弃”为无效,包括任何动作/事件(但可能不是&lt; input&gt; s),第一个&lt; / form&gt;关闭'主'形式。