Javascript JQuery从tr动态创建的输入中获取值
我已经用Javascript JQuery从tr动态创建的输入中获取值,javascript,jquery,html,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">&l
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\
......
$el.append(“”+数据[i]。订单+”\n\
\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
})
$('body')。在('click','a.link',函数(e)上{
e、 预防默认值();
var tr=$(this).closest('tr'),
id=tr.data('id'),//我们有这个id
token=tr.data('token'),//我们有这个token
qty=tr.data('qty');首先,同一文档中的id
应该是唯一的,这样您就可以在以下文档中按类替换id
:
<input name="qty" class="qty" type="number" value="'+data[i].qty+'" min="1">
希望这能有所帮助。问题:您的tr
中没有数据数量
属性。而且您的表中根本没有数据数量
解决方案:在创建表的过程中,您将数据[i].qty
作为值分配给输入
元素。因此,您需要读取输入
值。如下所示
qty = tr.find('#qty').val();
注意:Satpal提供了一个有效点。如果您在循环中构建tr
,那么您将为所有行中的所有input
元素分配相同的id
,这是不推荐的。最好删除id
属性,只需使用name
属性即可选择元素,比如
tr.find('input[name=“qty”]”).val();
或tr.find('td:eq(1)input').val()
但是,如果是这种情况,那么Satpal给出了正确的答案。您应该结合使用.find()
当您使用id=“qty”
动态创建元素时,它将创建无效的HTML。因为标识符必须是唯一的。因为元素的id是唯一的,$('#qty').val()就足够了
qty = $('#qty').val();
数量=tr数据(“数量”);
这意味着您要访问数据属性,因为您没有任何像“数据数量”这样的数据属性,所以您无法访问它。因此,将其设置为类或id。OP使用id=“数量”
动态创建元素,它将创建无效的HTML。那么为什么不简单$('#数量').val()
因为Id必须是unique@Satpal我们不确定他是否在一个循环中。如果是,那么你是对的。如果不是:)那么$('#qty').val()
suffice@Satpal你说得对。我在回答中添加了详细信息。OP正在使用id=“qty”
动态创建元素,它将创建无效的HTML。那么为什么不使用simple$(“#qty”)呢.val()。
qty = tr.find('[name=qty]').val();
qty = $('#qty').val();