4

我有一个 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 来做到这一点吗?

4

2 回答 2

1

您的代码的问题是您为复选框 =“”设置了值。这是不正确的,因为 value 是提交给服务器的内容。

您需要将其更改如下:

        <td><g:checkBox id="${bookInstance.id}" name="delete_checkbox" value="${bookInstance.id}"" /></td>
于 2012-08-10T00:19:06.723 回答
0

重写你的复选框,如:

<g:checkBox id="delete_checkbox" name="delete_checkbox" value="${bookInstance.id}" />

因此,当您提交时,您将在 params 映射中获得一个名为_delete_checkboxdelete_checkboxID数组。要查看您得到的结果,您可以尝试在操作中打印您的参数。

println params

您可以使用params['nameOfTheAttribute']. 获得 id 数组后,对其进行迭代并将其全部删除。

于 2012-08-09T14:32:44.193 回答