请在此处查看演示:http: //jsfiddle.net/9pR87/28/
- 添加输入 - 使用新输入添加新行
- 获取价值 - 获取最后添加的输入的价值
我正在创建一些额外的行(发票元素),但是当我想在动态创建的输入中使用获取值时,输入值始终为undefined
. 为什么?
为什么 jQuery 找不到动态创建的输入的值?
请在此处查看演示:http: //jsfiddle.net/9pR87/28/
我正在创建一些额外的行(发票元素),但是当我想在动态创建的输入中使用获取值时,输入值始终为undefined
. 为什么?
为什么 jQuery 找不到动态创建的输入的值?
我认为这足以满足您的需求:
$('#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() );
});
问题是:
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>';
$('#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
返回未定义的原因。
这是一个工作演示作为证明。