【发布时间】:2016-06-14 11:26:01
【问题描述】:
我正在构建一个应用程序,其中我有一个表格元素,如选择、输入等。我想将表格元素中选择的值填充到另一个表格中。
你可以找到我的代码here
JS:
$('button').click(function() {
var rows = $('#table1 tbody tr');
var previewTable = $('#table2 tbody');
previewTable.find('tr').remove();
for (var i = 0; i < rows.length; i++) {
var tr = $('<tr> </tr>');
previewTable.append(tr);
var row_cloned = $(rows[i]).clone();
var cols = rows[i].getElementsByTagName("td");
for (var j = 0; j < cols.length; j++) {
var col_cloned = row_cloned.find('td').clone();
previewTable.find('tr').eq(i).append(col_cloned[j]);
if ($(col_cloned[j]).children().length > 0) {
$(col_cloned[j]).children().each(function(index, item) {
if ($(item).is('select')) {
if ($(item).attr('multiple')) {
var foo = [];
$(item).each(function(i, selected) {
console.log($(selected).val());
foo[i] = $(selected).val();
});
$(col_cloned[j]).text(foo);
} else {
$(col_cloned[j]).text($(item).val());
}
} else if ($(item).is('label')) {
var selected = [];
$(item).find('input:checked').each(function(index, item) {
selected.push($(item).val());
$(col_cloned[j]).append(selected + '<br>');
})
}
})
} else {
$(col_cloned[j]).text($(col_cloned[j]).text());
}
}
}
})
我的步骤:
- 获取table1和table2
- 统计table1的行数
- 在 table2 中添加这么多空行
- 获取table1中的每一行
- 统计table1每一行的td
- 在每个 td 中找到孩子
- 检查孩子是选择、输入还是纯文本
- 如果children是select,判断是多选还是单选
- 对每个表单元素采取相应措施,仅复制值,然后附加到 table2
- 完成
这一切都在一个按钮上点击复制
问题:不知何故设法获取检查的输入表单元素值。但未能在选择框中选择值。
对于多选框我的代码:
if ($(item).attr('multiple')) {
var foo = [];
$(item).each(function(i, selected) {
console.log($(selected).val());
foo[i] = $(selected).val();
});
$(col_cloned[j]).text(foo);
}
对于单选框:
else {
$(col_cloned[j]).text($(item).val());
}
我的错误到底是什么?提前致谢
【问题讨论】:
-
嗨,单元格输入类型是固定的吗?我的意思是,例如选择将始终到第一个单元格?
-
是的,单元格表单字段是固定的。
-
@Legionar:您指向的链接是完全不同的场景。而且,我也尝试了那里提供的可能解决方案。
-
检查我答案中的代码,它会起作用。
标签: javascript jquery