对于一个小小的购物车我在页面上有多个表单。每个表单代表具有一堆操作触发器的产品数量。在表单之外我还有一些我需要使用的数据。
无论如何,我需要获得与动作触发相对应的表单ID。
所以我创建了一个在单击动作按钮时调用的函数。
function transferData() {
// var form_id= $(this).closest("form").prop("id");
// var form_id= $(this).prev("form").prop("id");
var form_id= $(this).closest('td').parent().closest('form').prop('id');
动作由
触发<button name="submit[1]" type="button" onClick="transferData()" class="btn btn-info btn-sm"><i class="fa fa-refresh"></i></button>
html结构simplfy
<tr><form id="form_update[1]" name="form_update[1]" action="cart_update.php" method="post"><td data-th="Product"><div class="row">
<div class="col-sm-2 hidden-xs"><img width="100" src="../images/frere.jpg" alt="Frere" class="img-responsive"/></div>
<div class="col-sm-10">
<h4 class="nomargin">Frere</h4>
<p>bad boy frere</p>
</div>
</div></td><td data-th="Price">$25.00</td><td data-th=""> </td><td data-th="Quantity">
<input type="number" min="0" name="item_qty_summary[1]" class="form-control text-center" value="4">
</td><td data-th="Subtotal" class="text-right" >$100</td><td class="actions text-right">
<button name="submit[1]" type="submit" onClick="transferData(this)" class="btn btn-info btn-sm"><i class="fa fa-refresh"></i></button>
<a href="cart_update.php?removep=2015002&return_url=aHR0dC90aXF1ZXNob3AvaW5jbHVkZXMvdmlld19jYXJ0XzIwMTUucGhw" class="btn btn-danger btn-sm"><i class="fa fa-trash-o"></i></a>
</td></form></tr>
但我得到一个未定义的错误消息,而不是id
我在俯视什么?
答案 0 :(得分:3)
在您的函数中传递一个参数,如下所示:
function transferData(elem) {
并使用$(elem)
代替$(this)
并在您的html中使用,如下所示:
onClick="transferData(this)"
从你的html更新中,你可以这样使用:
var form_id= $(elem).closest('form').attr('id');
答案 1 :(得分:3)
首先,在javascript中附加您的事件处理程序...
$("button[type='submit']").on('click', transferData);
...然后,在事件处理程序中,this
是单击的元素(提交按钮):
function transferData() {
var form_id= this.form.id;
...
}