以html格式提交隐藏字段

Yud*_* Li 12 html javascript css

对于基本的HTML表单,我想将表单分成三个选项卡,每个选项卡将包含某些字段,并且在提交表单时,我希望三个表单中的所有数据都能够提交.

所以我必须通过创建一个菜单<ul><li>

<ul class="subnav">
    <li class="subnav0 current"><a href="javascript:showTab('tab1');">Tab1</a></li>
    <li class="subnav1"><a href="javascript:showTab('tab2');">Tab2</a></li>
    <li class="lastItem subnav2"><a href="javascript:showTab('tab3');">Tab3</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

在这个菜单下面,我有三个代表每个标签的div:

<div class="tab1"></div>
<div class="tab2 displayNone"></div>
<div class="tab3 displayNone"></div>
Run Code Online (Sandbox Code Playgroud)

输入控件元素将放入每个制表符div中.菜单导航栏中的javascript将控制通过每个div的调用show()hide()方法显示哪个选项卡.(使用jQuery).

现在我的问题是:

1)我希望能够提交整个表格(三个div中的所有控件).但是,html表单不会在displayNone div中提交输入控件,这意味着我只能在我当前正在查看的选项卡中提交数据,而不能提交其他两个选项卡.

2)我还想在tab2或tab3中初始化表单时对hide元素执行一些javascript函数.但是,因为它们是display:none,所以javascript不会有任何影响.

那么有什么方法我可以以某种方式隐藏div,但也能够提交表单并对其进行任何javascript操作?

Dan*_*ell 14

根据W3C显示:可能仍然没有控件发送到服务器,因为它们被认为是成功的控件

17.13.2成功控制

成功的控制对于提交是"有效的".每个成功的控件都将其控件名称与其当前值配对,作为提交的表单数据集的一部分.必须在FORM元素中定义成功的控件,并且必须具有控件名称.

然而:

  • 已禁用的控件无法成功.
  • 如果表单包含多个提交按钮,则只有激活的提交按钮成功.
  • 所有"打开"复选框都可能成功.
  • 对于共享相同name属性值的单选按钮,只有"on"单选按钮可能成功.
  • 对于菜单,控件名称由SELECT元素提供,值由OPTION元素提供.只有选定的选项可能会成功.
  • 如果未选择任何选项,则控件不会成功,并且在提交表单时,不会将名称或任何值提交给服务器.
  • 文件选择的当前值是一个或多个文件名的列表.提交表单后,每个文件的内容将与其余表单数据一起提交.文件内容根据表单的内容类型打包.
  • 对象控件的当前值由对象的实现决定.

如果控件没有当前值

提交表单时,用户代理不需要将其视为成功控件.

此外,用户代理不应该认为以下控件成功:

重置按钮.已设置declare属性的OBJECT元素.由于样式表设置而未呈现的隐藏控件和控件仍可能成功.

例如:

<FORM action="..." method="post">
<P>
<INPUT type="password" style="display:none"  
          name="invisible-password"
          value="mypassword">
</FORM>
Run Code Online (Sandbox Code Playgroud)

仍然会使一个值与名称"invisible-password"配对并随表单一起提交.

在任何情况下,如果这似乎不起作用,为什么不在每个表单上尝试jQuery serialize()serializeArray()并连接值并将它们ajax回服务器.