Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery从tr动态创建的输入中获取值_Javascript_Jquery_Html - Fatal编程技术网

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();