2016-08-25 20 views
0

数量に価値を置こうとしているときに、最後の[在庫あり]フィールドが他のすべての[在庫中]フィールドを置き換えてしまうのはなぜですか?jQueryを使用して追加ID属性を選択する

<form action="add_sales.php" method="POST"> 
    <table class="table table-striped table-bordered table-hover results table-fixed"> 
     <thead> 
      <tr> 
       <th class="text-center">#</th> 
       <th>Product Name</th> 
       <th>Description</th> 
       <th>Price</th> 
       <th>In Stock</th> 
       <th style="width: 20%">Quantity</th> 
      </tr> 
      <tr class="warning no-result"> 
       <td colspan="8"><i class="fa fa-warning"></i> No Product Found</td> 
      </tr> 
     </thead> 
     <tbody> 
      <?php 
       $query = "SELECT * FROM products"; 
       $exec = mysqli_query($connection, $query); 
       $a = 1; 
       $b = 1; 
       while ($row = mysqli_fetch_array($exec)) { 
        $product_id = $row['product_id']; 
        $product_name = $row['product_name']; 
        $product_price = $row['sell_price']; 
        $description = $row['description']; 
        $product_quantity = $row['quantity']; 
       } 
      ?> 
      <tr> 
       <td class="text-center"><?php echo $product_id; ?><input type="hidden" name="product_id[]" value="<?php echo $product_id; ?>"></td> 
       <td><?php echo $product_name; ?></td> 
       <td><?php echo $description; ?></td> 
       <td><?php echo $product_price; ?></td> 
       <td><input type="number" name="hehe" value="<?php echo $product_quantity; ?>" id="<?php echo "qtyResult" . $a++; ?>" disabled></td> 
       <td><input type="number" name="qtyBuy[]" id="<?php echo "qtyBuy" . $b++; ?>" onkeyup="updateStock(this, event)"></td> 
      </tr> 
      <?php } ?> 
     </tbody> 
    </table> 
    <div class="form-group"> 
     <input type="submit" name="addCart" value="Add Items to Cart" class="btn btn-info pull-right"> 
    </div> 
</form> 

ここは私のjQueryスクリプトです。問題はvar inStockの値だと思います。 var inStockの値を固定数に変更するとうまくいきます。

function updateStock(obj, event) { 
    var inputQty = obj.value; 
    var inStock = "<?php echo $product_quantity; ?>"; 
    $(obj).closest('tr').find('input[id^="qtyResult"]').val(inStock - inputQty); 
} 

Relevant Table Image

+0

関数は 'updateStock'は、HTMLがレンダリングされる前に一度書かれているPHPの変数を持っている - のための適切な値を決定するために、関数の' event'引数を使用しますハードコードされた値ではなく、フィールド – RamRaider

答えて

0

$product_quantityは、ループの最後の値に設定されますので。

あなたがソースを表示し、JavaScript関数を見れば、あなたはそれを読み込み表示されます。

function updateStock(obj, event) { 
    var inputQty = obj.value; 
    var inStock = "234"; //or whatever the last value was 
    $(obj).closest('tr').find('input[id^="qtyResult"]').val(inStock - inputQty); 
} 

ページが読み込まれた後(及びそのためのPHPが終了した後)の値を変更することができますとして、あなたがつかむ必要がありますあなたがそれを必要とするDOMから現在の値:

function updateStock(obj, event) { 
    var inputQty = obj.value; 
    var quantityInput = $(obj).closest('tr').find('input[id^="qtyResult"]'); 
    quantityInput.val(quantityInput.val() - inputQty); 
} 
+0

これのために1時間以上立ち往生した。残念ながら私はまだupvoteできません。ありがとうございました! – Odie