Boa tarde pessoal, estou desenvolvendo um formulário, que tras uma datatable, integrada com RM, nessa datatable, tenho a primeira coluna que são as checkboxs, e possuo um botão que marca todas, necessito saber quais as checkboxs estão marcadas e validar a condição com um campo hidden, que possue valor 1, caso esteja marcada retornar valor 0 fazendo um input de sse valor em outro campo da datatable. Não sei se fui claro, mas é isso que preciso.
Respondendo, como eu consegui fazer segue abaixo.
Criei um INPUT 'hidden' que recebe os marcados
No HTML criei esse script abaixo.
<script>
function checaMarcador() {
var linha;
$('td').on("click", function () {
var row_index = $(this).parent().index();
var col_index = $(this).index();
linha = row_index;
var bloqueado = '1';
var desbloqueado = '0';
var marcador = document.getElementById("marcar___" + linha).checked;
if (marcador == true) {
$("#Numbloqueios___" + linha).val(desbloqueado);
} else {
$("#Numbloqueios___" + linha).val(bloqueado);
}
})
};
</script>
@Bruno,
Para obter o valor do checkbox deve:
$('#id_do_checkbox').val();
Se tiver valor, retorna o valor, se tiver vazio, irá retornar nulo
Se precisar de algo mais, comentá.
esqueci de dizer que essa checkbox esta em uma datatable, então preciso percorrer a datatable, verificar quem esta checado.
Também estou quebrando a cabeça para uma atividade parecida, qual foi a solução Bruno?
o que você precisa, pra eu poder tentar entender e ver se o que usei te ajuda.
Dentro de uma datatable preciso selecionar uma ou várias linhas.
Mas percebi que o comportamento é só para quando selecionamos uma linha, que recebe a class “active”
Voce precisa selecionar um checkbox e este receber um valor é isso?
Preciso identifica-lo, para recuperar as informações que estão na linha. A partir daí criar um array ou obj com esses valores.
Até agora só conseguir fazer usando datatable puros em jquery, só que minha intenção é usar o máximo dos recursos nativos
Galera, com jquery isso é muito simples!
Ler a documentação do framework faz muito bem, pois isso não é Fluig.
Documentação Jquery
Desse jeito funciona.
HTML
<div id="dvTable">
<table>
<thead>
<th></th>
</thead>
<tbody>
<tr>
<td>
<input type="checkbox" name="chkTeste___1" id="chkTeste___1">
</td>
</tr>
<tr>
<td>
<input type="checkbox" name="chkTeste___2" id="chkTeste___2">
</td>
</tr>
<tr>
<td>
<input type="checkbox" name="chkTeste___3" id="chkTeste___3">
</td>
</tr>
</tbody>
</table>
</div>
Jquery com prop name
$('#dvTable table tbody tr').find('input[name^=chkTeste___]:checkbox:checked');
Jquery com prop id
$('#dvTable table tbody tr').find('input[id^=chkTeste___]:checkbox:checked');
Se a ideia é pegar os não checados, ficaria assim:
Jquery com prop id
$('#dvTable table tbody tr').find('input[id^=chkTeste___]:checkbox:not(:checked)');
Isso irá retornar todos os checkbox checados. Se a ideia é percorrer esse conjunto, você pode usar o each para verificar o this.value.
Percorrendo o conjunto
const inputsChecked = $('#dvTable table tbody tr').find('input[id^=chkTeste___]:checkbox:checked');
$.each(inputsChecked, function(index, element){
console.log(this.value);
})
Abç.
ok Marcos, assim funciona mas acredito que no caso dele ele esta montando as linhas dinamicamente, e do jeito que postou voce esta declarando as TDs, no meu caso eu montei dinamicamente a DATATABLE, vou adicionar como montei, ve se te ajuda.
Valeu Cara! Ajudou bastante.
@Bruno, independente de ser montado dinamicamente ou não, pois não passo filtro de TD na query do jquery. Limito a busca até a TR e após isso faço um find dos elementos que quero. Vale lembrar que essa query pode ser mais refinada afim de melhorar o tempo de busca. Eu uso dessa forma nas datatables que utilizo.