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

新手上路,请多包涵

我用 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 的价值?

原文由 Klapsius 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 280
2 个回答

问题: 您的 --- 中没有 --- tr data-qty 属性。您的表中也根本没有 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 给出了正确的答案。

原文由 Rajshekar Reddy 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

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

Then if you want to get the input value you could use find and the class of the input then .val() , so it should be :

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

希望这可以帮助。

原文由 Zakaria Acharki 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题