[Resolvido] Recuperar value de checkbox dinâmico via AJAX
Pessoal, boa tarde!
Não tenho certeza em qual categoria se encaixa minha dúvida, mas vamos as explicações:
**** Idéia
Dentro de um sistema que roda totalmente em AJAX, preciso enviar através de um formulário algumas informações (input text, combo e checkbox) que a princípio eram simples, mas com a chegada do checkbox complicou um pouco.
**** Problema
O formulário tem uma validação que valida e transfere as informações do form para um arquivo ASP com a função final, não tenho nenhum problema com o ASP, é apenas na parte do javascript que deveria trazer os valores "checados" no checkbox group.
Código formulário
<form action="enviaFormGrupos" name="formGrupos" id="formGrupos">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="330" valign="top">
<table border="0" cellpadding="2" cellspacing="0" class="global_layout_sessoes_tabelas_textos_geral">
<tr>
<td>Instituição:</td>
<td><select name="cbxInstituicao" id="cbxInstituicao" class="global_layout_sessoes_tabelas_textos_input_text" onchange="chamaSupervisores(this.value);">
<%
dim sqlSelect
sqlSelect = "select codigo, instituicao from t_instituicao order by instituicao asc"
'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
dim dados_instituicao
dados_instituicao = select_sql(sqlSelect, "", "", "", "")
'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
if (isArray(dados_instituicao) = true) then
response.write("<option value="& chr(34) &"0"& chr(34)&">Selecione uma instituição</option>"& chr(13))
linhas = ubound(dados_instituicao ,2)
colunas = ubound(dados_instituicao ,1)
cont = 0
do while cont <= linhas
response.write("<option value="& chr(34) & dados_instituicao(0, cont) & chr(34)&">"& dados_instituicao(1, cont) &"</option>"& chr(13))
cont = cont + 1
loop
else
response.write("<option value="& chr(34) &"-1"& chr(34)&">Nenhum registro no banco</option>")
end if
%>
</select></td>
</tr>
<tr>
<td>Modalidade:</td>
<td>
<select name="cbxModalidade" id="cbxModalidade" class="global_layout_sessoes_tabelas_textos_input_text">
<option value="0" selected="selected">Selecione uma modalidade</option>
<option value="1">Cursos Livres Profissionalizantes</option>
<option value="2">Técnico</option>
<option value="3">Graduação</option>
<option value="4">Pós Graduação</option>
<option value="5">Workshop / Seminário</option>
<option value="6">Corporativo</option>
<option value="7">Eventos</option>
</select>
</td>
</tr>
<tr>
<td width="140">Nome do grupo: </td>
<td><input name="txtTitulo" type="text" class="global_layout_sessoes_tabelas_textos_input_text" id="txtTitulo" size="35" /></td>
</tr>
</table>
<div id="global_supervisores"></div>
<div id="layout_painelAlertas">Lembre-se de preencher TODOS os campos acima.</div>
</td>
<td valign="top"><div id="retorno"></div></td>
</tr>
</table>
</form>
Código de onde está o checkbox - default_supervisores.asp
<% response.charset = "iso-8859-1" %>
<!--#include file="../painelctrl_checagem.asp"-->
<%
idInstituicao = request.querystring("id")
if idInstituicao <> "" then
%>
<table border="0" cellpadding="2" cellspacing="0" class="global_layout_sessoes_tabelas_textos_geral">
<tr>
<td valign="top" width="126">Supervisores:</td>
<td>
<%
sqlSelect = "select cod_usuario, nome from t_usuario_cad_basico where ((tipo = 4) and (ativo = 1) and (cod_instituicao = '"& idInstituicao &"'))"
dadosSupervisores = select_sql(sqlSelect,"","","","")
if isarray(dadosSupervisores) = true then
for ds = 0 to ubound(dadosSupervisores,2)
%>
<input type="checkbox" name="chkSupervisor" id="chkSupervisor_<%=ds%>" value="<%=dadosSupervisores(0,ds)%>" /> <%=dadosSupervisores(1,ds)%><br />
<%
next
%>
<% else %>
Nenhum supervisor cadastrado para esta instituição<input type="hidden" id="chkSupervisor_0" name="chkSupervisor" value="0" />
<% end if %>
</td>
</tr>
</table><% end if %>
Código javascript
function enviaFormGrupos(act) {
formReady = 1;
// campo de instituicao
if(document.getElementById("cbxInstituicao").value == "") {
apresentaAlertas('1', 'INSTITUIÇÃO');
document.getElementById("cbxInstituicao").focus();
return(false);
formReady = 0;
}
// campo de modalidade
if(document.getElementById("cbxModalidade").value == "") {
apresentaAlertas('1', 'MODALIDADE');
document.getElementById("cbxModalidade").focus();
return(false);
formReady = 0;
}
// campo de título
if(document.getElementById("txtTitulo").value == "") {
apresentaAlertas('1', 'NOME DO GRUPO');
document.getElementById("txtTitulo").focus();
return(false);
formReady = 0;
}
if(formReady == 1) {
// pegando valores dos campos
if(act != 1){
var txtIdGrupo = document.getElementById("txtIdGrupo").value;
}
var cbxInstituicao = document.getElementById("cbxInstituicao").value;
var cbxModalidade = document.getElementById("cbxModalidade").value;
var txtTitulo = document.getElementById("txtTitulo").value;
var chkSupervisor = "";
var e = document.getElementsByName("chkSupervisor").length;
var cnt = 0;
alert(e);
for(cnt = 0; cnt < e; cnt++){
if(document.getElementsByName("chkSupervisor").checked == true){
alert(document.getElementsByName("chkSupervisor").value+"\n id:"+cnt);
chkSupervisor = document.getElementsByName("chkSupervisor").value +"_";
}
}
// criando variável de parametros
var parametros = "";
var actTarget = "adicionar";
if(document.getElementById("txtIdGrupo")){
parametros += "txtIdGrupo="+ txtIdGrupo +"&";
actTarget = "editar";
}
alert(chkSupervisor);
parametros += "cbxInstituicao="+ url_encode(cbxInstituicao) +"&";
parametros += "cbxModalidade="+ url_encode(cbxModalidade) +"&";
parametros += "txtTitulo="+ url_encode(txtTitulo) +"&";
parametros += "chkSupervisor="+ url_encode(chkSupervisor) +"&";
// chamando função ajax de post
enviaForm('master', 'grupos_'+ actTarget +'_action', parametros)
}
}
**** Funcionamento
Basicamente o form tem apenas os campos cbxInstituicao, cbxModalidade e txtTitulo. De acordo com o id selecionado no cbxInstituicao, entra na div global_supervisores um include com apenas a listagem dos checkbox da instituição selecionada.
**** O que preciso
Todos os 3 campos que existem no form inserem e alteram normalmente em meu sistema, já nosso querido amigo checkbox está se fazendo de difícil, a única forma de eu conseguir algum valor inteiro (id) deles é utilizando o getElementByName, mas ele traz apenas o primeiro id da lista e nada mais.
No caso, neste lista inicial em que estou fazendo teste tenho 4 nomes com ids, mas esta lista é dinâmica, eu poderia fazer um "ajuste técnico" passando manualmente os nomes dos checkbox e recuperar seus valores através do checked, mas vai tirar o dinamismo do meu sistema.
Tentei desde ontem encontrar algo parecido no google, mas a grande maioria dos resultados da pesquisa foram algo como "aceito" ou "mostra div", nada relacionado com recuperar os valores do campo checkbox passado como um array, pois eles tem o mesmo nome mudando apenas os value, alguém tem uma luz ou estou reinventando a roda?
[]'s
Discussão (9)
Carregando comentários...