我有一个grails项目,我需要选择要删除的字段,当我点击“删除”时,我需要一个删除所有选定项目的功能:
html代码:
<form name="bookForm" action="list" method="post">
....
<g:link controller="book" action="delete">Delete</g:link>
....
....
<g:checkBox id="select_all" name="select_all" value="" onclick="selectAll();" />
....
<g:each in="${bookList}" status="i" var="bookInstance">
<tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
<td><g:checkBox id="${bookInstance.id}" name="delete_checkbox" value="" /></td>
</tr>
</g:each>
....
</form>
javascript代码:
<script type="text/javascript">
function selectAll(){//this function is used to check or uncheck all checkboxes
var select = document.getElementById("select_all");
var checkboxes = document.forms['bookForm'].elements['delete_checkbox'];
if (select.checked){
for (i = 0; i < checkboxes.length; i++) checkboxes[i].checked = true;
}else{
for (i = 0; i < checkboxes.length; i++) checkboxes[i].checked = false;
}
}//this function works fine
</script>
问题:
我需要操作来检查列表gsp中的所有复选框,如果选中它们,请取其ID并按ID删除记录。
我可以通过groovy或javascript来做到这一点吗?
答案 0 :(得分:1)
您的代码存在的问题是您为checkbox =“”设置了值。这是不正确的,因为值是提交给服务器的。
您需要将其更改为:
<td><g:checkBox id="${bookInstance.id}" name="delete_checkbox" value="${bookInstance.id}"" /></td>
答案 1 :(得分:0)
重写您的复选框,如:
<g:checkBox id="delete_checkbox" name="delete_checkbox" value="${bookInstance.id}" />
因此,当您提交时,您将在参数地图中获得一系列名为 _delete_checkbox 或 delete_checkbox 的ID。要了解你得到了什么,你可以尝试在行动中打印你的参数。
println params
您可以使用params['nameOfTheAttribute']
获取所需的数组。
获得id数组后,迭代它并将它们全部删除。