2012-09-17 143 views
10

對於基本的HTML表單,我想將表單分成三個選項卡,每個選項卡將包含特定的字段,並且在提交表單時,我希望三種表單中的所有數據都能夠提交。以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> 

和該菜單下創建的菜單,我有三個的div表示每個選項卡的:

<div class="tab1"></div> 
<div class="tab2 displayNone"></div> 
<div class="tab3 displayNone"></div> 

輸入控制元件將被放入每個tab div。並且菜單導航欄中的JavaScript將通過調用每個div的show() & hide()方法來控制顯示哪個選項卡。 (使用jQuery)。現在

我的問題是:

1)我希望能夠提交整個形式(三級申報單中的所有控件)。但是,html表單不會在displayNone div中提交輸入控件,這意味着我只能在當前正在查看的選項卡內提交數據,而不能在其他兩個選項卡上提交數據。

2)當初始化tab2或tab3中的表單時,我也想在隱藏元素上做一些javascript函數。但是,由於它們是display:none,所以javascript將不起任何作用。

那麼有沒有什麼辦法可以隱藏div,但也能夠提交表單並對其執行任何javascript操作?

+1

請試用jQuery UI Tabs插件:http://jqueryui.com/demos/tabs/ – diEcho

+1

謝謝@diEcho,我知道有這樣一個jQuery插件,但我想我更高興知道是否有一個解決方案,而不是依靠圖書館。 –

回答

13

按照W3C顯示:無控制仍可以發送到服務器,因爲它們被認爲successsful控制

17.13.2成功控制

一個成功的控制是提交「有效」 。每個成功的 控件都將其控件名稱與其當前值配對,作爲提交的表單數據集的一部分 。必須在FORM元素中定義成功的控件 ,並且必須具有控件名稱。

但是:

  • 控件被禁用不能成功。
  • 如果表單包含多個提交按鈕,則只有激活的 提交按鈕成功。
  • 所有「開」複選框可能是 成功。
  • 對於名稱屬性共享相同值 的單選按鈕,只有「打開」單選按鈕可能會成功登錄到 。
  • 對於菜單,控件名稱由一個 SELECT元素提供,值由OPTION元素提供。只有 選定的選項可能會成功。
  • 如果未選擇 選項,則控件不成功,並且在提交表單 時,不會將名稱和 任何值提交給服務器。
  • 文件選擇的當前值是一個或多個文件名的列表 。在提交表格後,每個文件的內容 將與表格數據的其餘部分一起提交。文件 內容根據表格的內容 類型打包。
  • 對象控件的當前值由對象的實現確定。

如果控制不具備的電流值

當表單提交,用戶代理不需要 把它作爲一個成功的控制。

此外,用戶代理不應該考慮以下控件 成功:

復位按鈕。其聲明屬性已設置的OBJECT元素。 由於樣式 工作表設置而未呈現的隱藏控件和控件可能仍會成功。

例如:

<FORM action="..." method="post"> 
<P> 
<INPUT type="password" style="display:none" 
      name="invisible-password" 
      value="mypassword"> 
</FORM> 

仍然會導致價值與名義 「隱形密碼」進行配對,並與形式提交。

在任何情況下,如果不似乎是工作,爲什麼不試試jQuery的serialize()serializeArray()每份表格上並連接所有的價值觀和AJAX他們回服務器。

+0

謝謝,我想我混合了殘疾和隱藏的概念。一個快速的谷歌搜索告訴我只有禁用的字段不會被提交。 –

3

關於第一點,僅僅因爲輸入不顯示任何內容,並不意味着它不會提交這些字段。

關於你的第二點,我不太關注。你是說當你打開其中一個標籤時,你想對內容做一些操作?如果是這樣,那麼JQuery用戶界面可以讓你做到這一點: -

http://jqueryui.com/demos/tabs/#event-show

你能給出一個更完整的例子,包括窗體標籤和一些投入?

+0

謝謝你的回答,是的,的確是我的第一點問題。在第2點,我有一個解決方法是先做js操作,然後隱藏div,這個工作正常。 –