Ótima dica Felipe.
Consegui da forma que você explicou. E simulando o clique no filtro, com a função emularCliqueCheckbox
faz o seguinte:
-
Encontra o checkbox na página usando seu
id
.
-
Emula um clique no checkbox (chama o método
.click()
).
-
Executa a função
nm_proc_int_search
, que é chamada quando o checkbox é clicado, com os parâmetros especificados no código original.
Ou seja, a função simula o comportamento de clicar no checkbox e executar o código associado a esse clique.
Exemplo do meu elemento html:
<input class="scAppDivToolbarInput" style="margin:0px" type="checkbox" onclick="nm_proc_int_search('chbx', 'tx','Realizado','financeiro_movimento_realizado','id_int_search_financeiro_movimento_realizado','financeiro_movimento_realizado', '', 'N')" id="id_int_search_financeiro_movimento_realizado_7b8b965ad4bca0e41ab51de7b31363a1" name="int_search_financeiro_movimento_realizado[]" value="n##@@Não">
CODIGO JS:
function emularCliqueCheckbox() {
var checkbox = document.getElementById('id_int_search_financeiro_movimento_realizado_7b8b965ad4bca0e41ab51de7b31363a1');
if (checkbox) {
// Emula o clique
checkbox.click();
}
}
No meu contexto eu chamo a esse função em um botão JS da grid, para mim faz sentido pq quero aplicar vários filtros com uma única ação do usuário. Pegando name e value:
function emularClquesCheckboxes() {
// Array de objetos com name e value dos checkboxes
var checkboxConditions = [
{name: 'int_search_financeiro_movimento_realizado[]', value: 'n##@@Não'},
{name: 'int_search_financeiro_movimento_tipo_financeiro_id[]', value: '2##@@Despesa'},
{name: 'int_search_financeiro_movimento_ent_sai[]', value: 's##@@Saída'}
];
// Itera sobre as condições (name e value)
checkboxConditions.forEach(function(condition) {
// Pega todos os checkboxes com o name especificado
var checkboxes = document.getElementsByName(condition.name);
// Para cada checkbox, verifica se o value corresponde e emula o clique
checkboxes.forEach(function(checkbox) {
if (checkbox.value === condition.value) {
checkbox.click();
}
});
});
}