2

请在此处查看演示:http: //jsfiddle.net/9pR87/28/

  1. 添加输入 - 使用新输入添加新行
  2. 获取价值 - 获取最后添加的输入的价值

我正在创建一些额外的行(发票元素),但是当我想在动态创建的输入中使用获取值时,输入值始终为undefined. 为什么?

为什么 jQuery 找不到动态创建的输入的值?

4

2 回答 2

6

我认为这足以满足您的需求:

$('#GetValue').click(function() {
    var i = $('table tbody tr').length-1; // subtract 1 for correct indexing
    alert($('#ItemPrice-' + i).val());
    // OR
    alert( $('[id^=ItemPrice]:last').val() );
});

演示

根据 jsfiddle 的评论

问题是:

tableRow += '<td><input type="text" name="ItemPrice[]" id="ItemPrice-' + i + ' " 
                                                                              ^--- an space
placeholder="Item Price"></td>';

tableRow += '<td><input type="text" name="NumberOfItems[]" id="NumberOfItems-' + i + ' " 
                                                                                      ^-- an space
placeholder="Number Of Items"></td>';

这是更新和工作代码

于 2012-09-11T16:55:43.050 回答
2
$('#GetValue').click(function() {

    var i = $('table tbody tr').length; // this line is the issue

    alert($('#ItemPrice-' + i).val());

});​

我已经在您的代码中复制了给您带来问题的函数。我突出显示的行应该是这样的:

var i = $('table tbody tr').length-1;

这是因为 Javascript 中的数组是 0 索引的,这意味着它们从零开始向上计数。这意味着如果你想得到数组的最后一个元素,你需要找到数组的长度并减去一个,正如我所演示的。

这一行:

alert($('#ItemPrice-' + i).val());

实际上返回一个数组,该数组从 0 开始计数。这就是为什么在 position 处获取元素array.length返回未定义的原因。

这是一个工作演示作为证明。

于 2012-09-11T16:54:52.473 回答