试图获得最接近的表单ID?

时间:2015-02-07 17:38:13

标签: jquery forms closest

对于一个小小的购物车我在页面上有多个表单。每个表单代表具有一堆操作触发器的产品数量。在表单之外我还有一些我需要使用的数据。

无论如何,我需要获得与动作触发相对应的表单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="">&nbsp;</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

我在俯视什么?

2 个答案:

答案 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;
    ...
}