Php 表格内部表格备选方案

Php 表格内部表格备选方案,php,forms,html,Php,Forms,Html,我有一个相当奇怪的问题。我知道表单中的表单不是有效的HTML。但我需要一个解决方案,让我可以同时做一些事情 我使用“tabifier”javascript库来创建选项卡。通过为每个选项卡使用具有特殊id的div创建不同的选项卡 我有一个主窗体,它围绕着所有选项卡,如下所示: <form id=......> <div id=...> </div> <div id=...> </div> </form>

我有一个相当奇怪的问题。我知道表单中的表单不是有效的HTML。但我需要一个解决方案,让我可以同时做一些事情

  • 我使用“tabifier”javascript库来创建选项卡。通过为每个选项卡使用具有特殊id的div创建不同的选项卡
  • 我有一个主窗体,它围绕着所有选项卡,如下所示:

    <form id=......>
       <div id=...>
       </div>
       <div id=...>
       </div>
    </form>
    
    
    
  • 在其中一个选项卡中,我需要创建一个fileupload系统,它使用表单。如果我将此表单放置在“主表单”之外,它不会显示在选项卡布局中,而是单独显示

    <form id=......>
       <div id=...>
       </div>
       <div id=...>
       </div>
       <div id='fileuploads'>
            <form id=......>
            </form>
       </div>
    </form>
    
    
    
有什么办法可以让这一切顺利进行吗

  • 我尝试将fileupload作为最后一个子选项卡移动,然后在最后一个子选项卡之前结束主窗体,但这样,窗体在tab div内结束。这也是无效的html
  • 我猜document.getelementbyid(div.innerhtml)并像那样插入表单也不起作用
更新:

谢谢你给出的答案,尽管我不太明白如何完全实现它们。我想出了另一个主意

如果我只是创建fileupload输入字段,但不使用表单包围,然后添加一个调用js函数的按钮。此函数将文件上载的值以“不可见形式”放置在div和sumbits之外


这是一个好的解决方案吗?

将文件上载控件放置在外部表单中:

<form id=...>
    <!-- other tabs go here -->
    <div id="fileuploads">
        <!-- your file upload controls and markup go here -->
    </div>
    <!-- other tabs go here -->
</form>

您可以在这里使用技巧。 首先,将原始包装形式留在原处

然后,如果在fileupload表单中放置submit按钮,则设置onsubmit事件,然后在发送表单之前,在fileuploads选项卡周围创建一个新表单,并删除外部表单。如果在此之后使用新表单id($(表单id)。在Prototype或document.getElementById(表单id)。在普通javascript中提交)发送表单,则新表单将在不使用外部表单元素的情况下发送

您可以使用



唯一的问题是,您必须为Internet Explorer提供一个JS回退(如Opi建议的),因为它根本不支持此属性。

我建议将文件上载过程作为父表单的一部分,将其替换为某种形式的Ajax上载。在表单中玩弄表单永远不会奏效。关于您的更新:这将是一个很好的解决方案,但使用我的方法,您只需要将其应用于IE。所有其他浏览器都可以识别
表单
属性(这与JS基本相同)
<form id="fileuploads" action="http://yo.ur/target/" method="POST"></form>
<form id="mainform">
   <div id="first_tab">
   </div>
   <div id="second_tab">
   </div>
   <div id="fileuploads">
        <input type="text" name="desc" form="fileuploads">
        <input type="file" name="file" form="fileuploads">
        <input type="submit" value="Submit" form="fileuploads">
   </div>
</form>