我正在尝试为选中的每一行在表单内部创建一个隐藏输入,并且我想使用来自隐藏列的ID插入每个隐藏输入的值。
这是我到目前为止所拥有的:
.on('check.bs.table check-all.bs.table', function (row) {
var selects = $('#users-table').bootstrapTable('getSelections');
ids = $.map(selects, function (row) {
return row.id;
});
var input = document.createElement("input");
input.setAttribute('type', 'hidden');
input.setAttribute('name', 'delete['+ids+']');
input.setAttribute("id", 'delete['+ids+']');
input.setAttribute('value', 'delete['+ids+']');
//append to form element that you want .
document.getElementById("deleteModalForm").appendChild(input);
})
它正在为每个要检查的框创建一个新的隐藏输入,就像我想要的那样,但是我遇到的问题是它将id连接在一起。这是发生的情况的示例:
<input value="delete[3]" id="delete[3]" name="delete[3]" type="hidden">
<input value="delete[3,2]" id="delete[3,2]" name="delete[3,2]" type="hidden">
我想要它做的是:
<input value="delete[3]" id="delete[3]" name="delete[3]" type="hidden">
<input value="delete[2]" id="delete[2]" name="delete[2]" type="hidden">
如果有帮助,我正在使用Bootstrap数据表
有人可以帮我吗?
编辑:这是一个JSFiddle。当您选中该框时,它将添加一个新输入,并且您会看到每个输入都与数字相连。对于此示例,我没有使用type="hidden"
为什么不直接使用row.stargazers_count
?
row
是当前选定行的对象,row.stargazers_count
代表列的行值data-field='stargazers_count'
。
input.setAttribute('value', 'delete['+row.stargazers_count+']');
getSelections
做同样的工作,但是它将所有选定的行都带入对象,因此您必须提取最后一个:
var selects = $table.bootstrapTable('getSelections');
var stars = selects[selects.length-1].stargazers_count;
input.setAttribute('value', 'delete['+stars+']');
但这对数组是不必要的操作,因为您有row
权利,为此,您将其传递给事件:
.on('check.bs.table', function (e, /* here it is: */ row){
您的代码有更多问题:
当您重复输入名称时,这将行不通:
input.setAttribute('name', 'delete['+row.stargazers_count+']');
改用它,它将在提交时自动创建名称数组:
input.setAttribute('name', 'delete[]');
这也行不通,因为您重复输入id(它们必须是唯一的):
input.setAttribute("id", 'delete['+row.stargazers_count+']');
row.id
改为使用:
input.setAttribute("id", 'delete_'+row.id);
为什么将ID一起加入?
.map()
将数组或对象中的所有项目转换为新的项目数组。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句