我已使用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
的价值?
答案 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。