2010-10-18 62 views
2

我已經使用JavaScript來隱藏包含表單元素div S:唯一可見股利形式的元件將得到提交

<script type="text/javascript"> 
<!-- 
function showMe (it, box) { 
    var vis = (box.checked) ? "block" : "none"; 
    document.getElementById(it).style.display = vis; 
} 
//--> 
</script> 

當某些複選框(ES)被選擇的相應div(一個或多個)被示出或獲取可見:

<form> 
    <input type="checkbox" name="modtype" value="value1" onclick="showMe('div1', this)" />value1 
    <input type="checkbox" name="modtype" value="value2" onclick="showMe('div2', this)" />value2 
    <input type="checkbox" name="modtype" value="value3" onclick="showMe('div3', this)" />value3 
    <input type="checkbox" name="modtype" value="value4" onclick="showMe('div4', this)" />value4 
    <input type="checkbox" name="modtype" value="value5" onclick="showMe('div5', this)" />value5 
    <div class="row" id="div1" style="display:none">Show Div 1 <input type="text" name="valueone" id="valueone" /></div> 
    <div class="row" id="div2" style="display:none">Show Div 2 <input type="text" name="valuetwo" id="valueone" /></div> 
    <div class="row" id="div3" style="display:none">Show Div 3 <input type="text" name="valuethree" id="valueone" /></div> 
    <div class="row" id="div4" style="display:none">Show Div 4 <input type="text" name="valuefour" id="valueone" /></div> 
    <div class="row" id="div5" style="display:none">Show Div 5 <input type="text" name="valuefive" id="valueone" /></div> 
    <br /> 
    <input type="submit" name="button" id="button" value="Submit" /> 
</form> 

在上述情況下,我已經使用了5個div s的五個輸入,如果用戶選擇兩個複選框並提交表單,我不想讓其他3個輸入字段,以獲取與空字段提交。只需選擇2個輸入字段的值即可提交。

回答

0

這不是形式工作的方式。您需要:

  • 修改的輸入(通常是壞),或...價值
  • 操作DOM元素進行修改是什麼形式的一部分,究竟是不是在結構(而不​​是造型)水平(非常差)或...
  • 將其分成多種形式,並提交您感興趣的只有或...
  • 無視您對服務器端不感興趣的信息或...
  • 更改您的表單設計。

沒有進一步的證據,我會選擇後面的兩個。

3

您可以嘗試禁用空白字段作爲禁用字段不提交與表單。

+0

確實這是一個好主意。我一直在使用這個在我的一些網絡應用程序中,它已經在我到目前爲止測試過的所有瀏覽器中工作。另一個問題是,在Firefox中,當你重新加載一個頁面時,''將保留'disabled'屬性,所以用戶數據不會丟失。 – 2010-10-18 12:50:21

0

我能想到的只有兩種方法來解決這個問題:在服務器複選框

  1. 檢查值而忽略文本框的值(但值仍然會被髮送到服務器)
  2. 未選中時,使用JavaScript從表單中完全刪除div(或只是輸入),並在複選框被選中時將其添加回來
  3. 稍微修改後的版本將會有另一個隱藏表單,您可以在未選中時移動div。您需要從當前表單中刪除元素,並在複選框被選中時將其移回 - 這樣,您可以保留已填充到文本框中的值用戶,但未選中時,值將不會以當前表單提交。