繁体   English   中英

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

[英]JQuery get value from dynamically created input by 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价值?

问题:您的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给出了正确的答案。

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

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

然后,如果要获取input值,则可以使用find和输入的class ,然后是.val() ,因此应为:

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

希望这可以帮助。

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

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

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

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

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

数量= tr.data('qty'); 这意味着您要访问数据属性,因为您没有“ data-qty”之类的任何数据属性,因此无法访问它。 因此,要么将其设为类或ID。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM