2017-02-01 83 views
0

我有一個表單,您可以填寫多個字段。字段數量不固定,但取決於用戶的輸入。發送之前合併發佈數據

簡化形式:

<form method="POST" action="post.php"> 
    Field one: <input type="text" name="field[]" /><br /> 
    Field two: <input type="text" name="field[]" /><br /> 
    Field three: <input type="text" name="field[]" /><br /> 

    <br /><br /> 

    Checkbox one: <input type="checkbox" name="check[]" value="1" /><br /> 
    Checkbox two: <input type="checkbox" name="check[]" value="1" /><br /> 
    Checkbox three: <input type="checkbox" name="check[]" value="1" /><br /> 

    <br /><br /> 

    <input type="submit" value="Submit" /> 
</form> 

我面臨的問題是,field one應該checkbox one配對,twotwo等。這聽起來不難,對吧?如果一切都被檢查和填寫,它不是:

Array 
(
    [field] => Array 
     (
      [0] => one 
      [1] => two 
      [2] => three 
     ) 

    [check] => Array 
     (
      [0] => 1 
      [1] => 1 
      [2] => 1 
     ) 
) 

在PHP中,我可以鏈接數組索引在一起,一切都很好。我面臨的問題是,當你不選擇第二個複選框時。如果你這樣做,會有一個條目在check post data少:

Array 
(
    [field] => Array 
     (
      [0] => one 
      [1] => two 
      [2] => three 
     ) 

    [check] => Array 
     (
      [0] => 1 
      [1] => 1 
     ) 
) 

什麼是處理這種情況的最好方法是什麼? Ajax提交不是一個選項,但JavaScript操作是。

我正在想辦法在每個元素(一個,兩個,三個)的JS中創建數組並提交該數據。問題是,我該怎麼做,或者是否有更好(更好)的方法來處理這個問題?

+0

可能是複選框的隱藏文本字段。如果複選框選中,隱藏字段獲取值,否則隱藏字段爲空。 – Eugen

回答

1

您需要配對他們與匹配索引和設置的複選框默認隱藏的輸入之前定義它:

Field one: <input type="text" name="field[0]" /><br /> 

       <input type="hidden" name="check[0]" value="0"> 
Checkbox one: <input type="checkbox" name="check[0]" value="1" /><br /> 

所以現在你總是有一個check[0]field[0]匹配的,但它有一定的價值0如果沒有檢查。

+0

我一直在努力做到這一點,這是肯定的......當然,添加索引是最好的解決方案,並且可以工作。我沒有想到它自己... – Mathlight

+0

並感謝您爲複選框提出了一個整潔的小技巧...永遠不會知道這是可能的。 – Mathlight