JQuery通过tr从动态创建的输入中获取值

时间:2016-12-20 10:19:51

标签: javascript jquery html

我已使用JQuery动态创建了表格,我想获得input元素的值:

$el.append('<tr data-id='+ data[i].id + ' data-token='+data[i].token + '><td>'+data[i].order+'</td>\n\
      <td><input name="qty" id="qty" type="number" value="'+data[i].qty+'" min="1"></td>\n\
   ......

使用此代码,我可以生成表(这只是代码片段)。 我知道如何访问tr标签的值:

$('body').on('click', 'a.link', function(e) {
    e.preventDefault();

    var tr = $(this).closest('tr'),
        id = tr.data('id'), // we have the id
        token = tr.data('token'), // we have the token 
        qty = tr.data('qty'); <------------- this not working
 })

如何获得qty的价值?

5 个答案:

答案 0 :(得分:9)

问题:您的data-qty中没有tr属性。此外,您的表格中根本没有data-qty

解决方案:在创建表格期间,您将data[i].qty作为值分配给input元素。因此,您需要阅读input值。如下所示。

   qty = tr.find('#qty').val();

注意: Satpal提供了一个有效的观点。如果您在循环中构建tr,那么您将为所有行中的所有id元素分配相同的input,这是不推荐的。最好删除id属性,然后使用name属性来选择元素。喜欢

tr.find('input[name="qty"]').val();tr.find('td:eq(1) input').val()

然而,如果是这种情况,那么Satpal给出了正确答案。

答案 1 :(得分:5)

首先,id在同一文档中应该是唯一的,因此您可以在以下类中替换id

<input name="qty" class="qty" type="number" value="'+data[i].qty+'" min="1">

然后,如果您想获得input值,可以使用find和输入的class,然后.val(),那么它应该是:

qty = tr.find('.qty').val();

希望这有帮助。

答案 2 :(得分:2)

您应该将.find()Attribute Equals Selector [name=”value”]结合使用。

qty = tr.find('[name=qty]').val();

当您使用id="qty"动态创建元素时,它将创建无效的HTML。因为标识符必须是唯一的。

答案 3 :(得分:1)

由于元素的id是唯一的,$('#qty')。val()就足够了。

qty = $('#qty').val();

答案 4 :(得分:0)

qty = tr.data('qty'); 这意味着您要访问数据属性,因为您没有任何数据属性,如“data-qty”,您无法访问它。所以要么使它成为一个类或id。