2016-08-25 3 views
1

私は、ユーザーが行を追加できるようにするテーブルを持っています。テーブルには4つの列があります。アイテム、数量、価格、および税金。税の列はチェックボックスです。私は非表示のボックスの値を設定するために隠し入力を使用しています。このようにして私はポストデータを取って、特定の行に税金を課すべきかどうかを知ることができます。 (0値は税なし、1値は課税を意味します)問題は、配列にチェックボックスを入れると常に隠れた値を取得することです。配列のチェックされていないチェックボックスを使用する

表:たとえば

<table style="width: 90%" id="myTable" class="centered-table table table-bordered"> 
<thead> 
    <tr> 
    <th>Item*</th> 
    <th>Qty*</th> 
    <th>Price*</th> 
    <th>Tax</th> 
    <th>Action</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr> 
     <td style="width: 60%"><input type="text" id="detail" name="detail[]"required></td> 
     <td style="width: 8%"><input type="number" id="qty" name="qty[]" required></td> 
     <td style="width: 12%"><input type="number" id="price" name="price[]" required></td> 
     <input type="hidden" value="0" name="tax[]"> 
     <td style="width: 5%"><input type="checkbox" id="tax" name="tax[]" value="1"></td> 
     <td style="width: 12%"><div class="inline"><input type="button" id="addButton" class="btn btn-primary btn-xs" value="Add"/></div><div class="inline"><input type="button" id="deleteButton" class="btn btn-primary btn-xs" value="Delete"/></div> 
     </tr> 
    </tbody> 

:私は4行を持っています。最初と最後の行がチェックされます。配列は次のようになります[0,1,0,0,0,1]私はこのような配列を必要とします[1,0,0,1]これは可能ですか、チェックしていないボックスとチェックボックスを完全に違う方法で試す必要がありますか?私は0を取り除くループを考え出しましたが、私はいつもチェックボックスとチェックされていないボックスの組み合わせを見つけて失敗させることができます。

これは、テーブルに行を追加するために私のjavascriptのある

$(function(){ 
    $("#addButton").click(function(){ 
     $(this).closest("tr").clone(true).appendTo("#myTable"); 
    }); 

$("#deleteButton").click(function(){ 
    var x = $('#myTable tr').length; 
    if(x == 2){ 

    } else { 
     $(this).closest("tr").remove(); 
    } 

    }); 
}); 

答えて

4

未確認のチェックボックスは、単にサーバーに送信されることはありません、あなたはそれに対応するために、フォームを調整する必要があります。私のようなものを示唆している:

<form ...> 
    <input name="obj[0][name]" type="text"> 
    <input name="obj[0][qty]" type="text"> 
    <input name="obj[0][price]" type="text"> 
    <input name="obj[0][tax]" type="checkbox"> 

    <input name="obj[1][name]" type="text"> 
    <input name="obj[1][qty]" type="text"> 
    <input name="obj[1][price]" type="text"> 
    <input name="obj[1][tax]" type="checkbox"> 
    ... 
</form> 

をそして、あなたは確実に与えられたボックスはようになるはずです結果の配列内taxインデックスの有無をチェックすることによって確認されたことかどうかをテストすることができます

$_POST['obj'] == [ 
    [ 
     'name' => ..., 
     'qty' => ..., 
     'price' => ... 
    ], 
    [ 
     'name' => ..., 
     'qty' => ..., 
     'price' => ..., 
     'tax' => ... 
    ] 
] 
+0

テーブルに行を追加したり削除したりする機能を追加しました。行を追加して 'obj [0]'を 'obj [1]'から 'obj [2] 'まで増やす方法はどうでしょうか? – bobthegoalie

関連する問題