我有创建表的php代码。对于采购订单上的每个项目,将创建并填充新行。目标是在编辑采购订单时将其回发并保存在数据库中。一切正常,除了我的jQuery代码只会迭代第一行,无论我有多少行。 (因此,如果我有三行,它将打印第一行cartid三次。)
对不起,如果事情看起来很乱。
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();
})
});
答案 0 :(得分: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();
});
});
答案 1 :(得分:0)
您的()
选择器中有额外的.cartid
。
$(document).ready(function(){
$(".item-row").change(function() {
$(".cartid").each(function(){
row = {
cartid: $(".cartid").val()
}
alert(row.cartid);
performAjaxSubmission();
})
});
另外,你不应该通过.item-row
而不是.cartid
来循环吗?
答案 2 :(得分: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()
}