/ / Uzyskaj wartość checkboxa z kontrolera grails - javascript, html, grails, groovy, gsp

Uzyskaj wartość checkboxa z kontrolera grails - javascript, html, grails, groovy, gsp

Mam projekt grails, w którym muszę wybrać pola, które chcę usunąć, a kiedy klikam "usuń", potrzebuję funkcji do usunięcia wszystkich wybranych elementów:

Kod 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>

kod 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>

Problem:

Potrzebuję akcji, aby sprawdzić wszystkie pola wyboru w gsp listy, a jeśli są zaznaczone, weź ich identyfikatory i usuń rekord według identyfikatora.

Czy mogę to zrobić za pomocą groovy lub javascript?

Odpowiedzi:

0 dla odpowiedzi № 1

Przepisuj swoje pole wyboru jak:

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

Tak więc, po przesłaniu, dostaniesz zestaw nazw ids _delete_checkbox lub delete_checkbox wewnątrz twojego params mapa. Aby zobaczyć, co dostajesz, możesz spróbować wydrukować swoje parametry w akcji.

println params

Możesz uzyskać żądaną tablicę za pomocą params["nameOfTheAttribute"]. Gdy już masz tablicę identyfikatorów, wykonaj iterację i usuń wszystkie.


1 dla odpowiedzi nr 2

Problem z kodem polega na tym, że ustawiłeś wartość dla checkbox = "". To jest niepoprawne, ponieważ wartość jest tym, co dostaje się na serwer.

Musisz go zmienić w następujący sposób:

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