1

テーブルを作成するphpコードがあります。発注書の品目ごとに、新しい行が作成され、入力されます。目標は、発注書が編集されたときにポストバックされ、データベースに保存されることです。私のjQueryコードが、私が持っている行の数だけ最初の行を反復することを除いて、すべてが機能しています。(したがって、3 つの行がある場合、最初の行 carid が 3 回出力されます。)

雑に見えたらごめんなさい。

PHP コード:

<?php while($row = mysql_fetch_array($itemsquery)){?>
      <tr class="item-row" id="<?php echo $row['cart_id']?>">
          <td class="item-name"><div class="delete-wpr"><textarea><?php echo $row['on0'];?> <?php echo $row['itemname'];?></textarea><a class="delete" href="javascript:;" title="Remove row">X</a></div></td>
          <td class="description"><textarea class="cartid"><?php echo $row['cart_id'];?></textarea></td>
          <td><textarea class="cost" class="text-input" type="text"><?php echo $row['itemprice'];?></textarea></td>
          <td><textarea class="qty" type="text" name="name"><?php echo $row['quantity'];?></textarea></td>
          <td><span class="price" type="text">$<?php 
        $linecost = $row['quantity'] * $row['itemprice'];
        echo $linecost;?></span></td>
      </tr>
    <?php }?>

取得したものを確認するための jQuery ステートメント:

$(document).ready(function(){
$(".item-row").change(function() {
$((".cartid")).each(function(){
    row = {
        cartid: $(".cartid").val()
        }  

 alert(row.cartid);
 performAjaxSubmission();
 })
});
4

3 に答える 3

2

セレクターが混同されているようです。各行を反復処理したいのですが、セレクターが $(".cartid") を参照しているため、常に最初の結果が返されます。

これで問題が解決するはずです:

$(document).ready(function(){
$(".item-row").change(function() {
    $(".item-row").each(function(){
        var rowContext = $(this);
        var row = {
            cartid: $(".cartid", rowContext).val()
        }  
    alert(row.cartid);
    performAjaxSubmission();
});
});
于 2013-02-27T17:23:21.220 に答える
0

セレクターに余分なもの()があります。.cartid

$(document).ready(function(){
$(".item-row").change(function() {
$(".cartid").each(function(){
    row = {
        cartid: $(".cartid").val()
        }  

 alert(row.cartid);
 performAjaxSubmission();
 })
});

.item-rowまた、代わりにトラフをループするべきではあり.cartidませんか?

于 2013-02-27T17:19:42.427 に答える
0

あなたはこのように繰り返しています:

$(".cartid").each(function(){
row = {
    cartid: $(".cartid").val()
    }  

あなたがやるべきだと思われる

$(".cartid").each(function(){
row = {
    cartid: $(this).val()
    }  

残りのコードはチェックしていません。

編集:

$(".cartid").each(function(){
var cart = $(this);
row = {
    cartid: cart.val()
    }  
于 2013-02-27T17:21:39.353 に答える