我有下表:
<table cellspacing="0" cellpadding="0" id="product">
<tr>
<th>Name</th>
<th>Category</th>
<th>Price</th>
<th colspan="2">Nr products</th>
</tr>
<?php foreach ($productsInStock as $product) : ?>
<tr>
<td><?php echo $product->getName(); ?></td>
<td><?php echo $product->getCategory(); ?></td>
<td><?php echo $product->getPrice().ProductController::coin; ?></td>
<td><?php echo $product->getNrProducts(); ?></td>
<td><button type="submit" value="Delete" class="upload" onclick="deleteDataTable();">Delete</button></td>
<input type="hidden" name="hiddenfieldname" class="hidden" value="<?php echo $product->getId();?>">
</tr>
<?php endforeach; ?>
</table>
我需要每个隐藏字段的值,但我只得到第一个:
x = ('.hidden').val() // gives the first value
每次点击删除按钮
后如何获取不同的值答案 0 :(得分:1)
最简单的解决方案是将ID作为参数传递给deleteDataTable()
函数。
<td><button type="submit" value="Delete" class="upload" onclick="deleteDataTable(<?php echo $product->getId();?>);">Delete</button></td>
答案 1 :(得分:1)
问题是:上下文。
使用时
x = $('.hidden')
你得到所有元素,其中“隐藏”类。 .val()
然后从第一个获取值。
您需要将隐藏输入限制为与删除按钮位于同一行的输入。
不幸的是,你当前隐藏的内容实际上并不在桌面内,你有这个:
<table><tr>...</tr><tr>..</tr>
<input type="hidden"...>
<input type="hidden"...>
您需要将标记更改为:
<tr>
<td><?php echo $product->getName(); ?></td>
<td><?php echo $product->getCategory(); ?></td>
<td><?php echo $product->getPrice().ProductController::coin; ?></td>
<td><?php echo $product->getNrProducts(); ?></td>
<td>
<button type="submit" value="Delete" class="upload" onclick="deleteDataTable();">Delete</button>
<input type="hidden" name="hiddenfieldname" class="hidden" value="<?php echo $product->getId();?>">
</td>
</tr>
或类似,以便输入 in <{em> in a td
。
然后,您可以在删除点击上使用相关元素:
function deleteDataTable()
{
var x = $(this).closest("tr").find(".hidden").val();
}
或者,使用上面修改的html,使用.next
,但我会保留上面的
var x = $(this).next(".hidden").val();
答案 2 :(得分:0)
也许你正在寻找这个:
var x=[];
$('.hidden').each(function(){
x.push($(this).val());
});
x应包含所有值。
答案 3 :(得分:0)
你可以喜欢那个
<table cellspacing="0" cellpadding="0" id="product">
<tr>
<th>Name</th>
<th>Category</th>
<th>Price</th>
<th colspan="2">Nr products</th>
</tr>
<?php foreach ($productsInStock as $product) : ?>
<tr data-productid="<?php echo $product->getId();?>">
<td><?php echo $product->getName(); ?></td>
<td><?php echo $product->getCategory(); ?></td>
<td><?php echo $product->getPrice().ProductController::coin; ?></td>
<td><?php echo $product->getNrProducts(); ?></td>
<td><button type="submit" value="Delete" class="upload" onclick="deleteDataTable();">Delete</button></td>
</tr>
<?php endforeach; ?>
</table>
脚本
function deleteDataTable()
{
var productIdOfCurrentTR = $(this).closest("tr").data("productid");
}
答案 4 :(得分:0)
你可以简单地使用它:
<tr>
<td><?php echo $product->getName(); ?></td>
<td><?php echo $product->getCategory(); ?></td>
<td><?php echo $product->getPrice().ProductController::coin; ?></td>
<td><?php echo $product->getNrProducts(); ?></td>
<td>
<button type="submit" value="Delete" class="upload getValue" data-product-id="<?php echo $product->getId();?>">Delete</button>
</td>
</tr>
<script>
$('.getValue').click(function(){
var val = $(this).data('product-id');
});
</script>