Tenho uma aplicação WEB NodeJs+Javascript. Na minha view (FILTROS PARA RELATÓRIO) além dos inputs tenho um radio button onde seleciono o tipo de do relatório que será gerado. No meu Controller tenho acesso aos campos inputs (type=text) normalmente mas não tenho acesso aos inputs (type=radio). Abaixo vou colocar parte do código.
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- As 3 meta tags acima *devem* vir em primeiro lugar dentro do `head`; qualquer outro conteúdo deve vir *após* essas tags -->
<title><%= title %></title>
<link rel="stylesheet" type="text/css" media="screen" href="/estilos/estilos.css" />
</head>
<body>
<header>
<nav class="menuBase">
<ul>
<li><a href="/">Início</a></li>
<li><a href="/estagio/relatorios">Voltar</a></li>
<li><a href=""> </a></li>
</ul>
</nav>
</header>
<main class=frmRelFiltros>
<ul class="nav nav-tabs">
<li class="active" id="home-tab"><a data-toggle="tab" href="#pagina1">Relatório de Contratos</a></li>
</ul>
<div class="tab-content">
<div id="pagina1" class="tab-pane fade in active">
<form action='/contratos/relatorios/RelContratosPrint' method="post" id="relAlunos">
<!--
primeira linha
-->
<br>
<div class="filtros" style="margin:15px">
<div class="row">
<div class="form-group col-md-6 col-md-offset-0">
<label>Código Contrato.:</label>
<input type="text" name="cod_ini" value="0"/> A <input type="text" name="cod_fim" value="999999" />
<br> <br>
<label>Ativo/Inativo...:</label>
<input type="text" name="atv_ini" value="A"/> A <input type="text" name="atv_fim" value="Z" />
<br> <br>
<label>Data Cadastro...:</label>
<input type="text" name="cad_ini" value="01/01/2000"/> A <input type="text" name="cad_fim" value="31/12/2090" />
<br> <br>
<label>Data Vigência...:</label>
<input type="text" name="vig_ini" value="01/01/2000"/> A <input type="text" name="vig_fim" value="31/12/2090" />
<br> <br>
<label>Sit. Contrato...:</label>
<input type="text" name="sit_ini" value="0"/> A <input type="text" name="sit_fim" value="99" />
<br> <br>
<label>Código do Curso.:</label>
<input type="text" name="cur_ini" value="1"/> A <input type="text" name="cur_fim" value="99" />
<br> <br>
</div>
<div class="form-group col-md-6 col-md-offset-0">
<label>Código da Empresa.:</label>
<input type="text" name="emp_ini" value="1"/> A <input type="text" name="emp_fim" value="9999" />
<br> <br>
<label>Centro Integração.:</label>
<input type="text" name="cie_ini" value="1"/> A <input type="text" name="cie_fim" value="999"/>
<br> <br>
<label>Valor da Bolsa....:</label>
<input type="text" name="vlr_ini" value="1"/> A <input type="text" name="vlr_fim" value="99999999"/>
<br> <br> <br>
<div id="opcoesRelContratos" >
<p>Selecione o Tipo do Relatório:</p>
<input type="radio" id="tipoRel" name="padrao" value="padrao" checked=true>
<label for="padrao">Padrao-Conferência</label><br>
<input type="radio" id="tipoRel" name="faixa" value="faixa">
<label for="faixa">Faixa Salarial-Estatístico</label><br>
<input type="radio" id="tipoRel" name="alunos_empresas" value="alunos_empresas">
<label for="alunos_empresas">Identificação de Alunos por Empresa</label> <br>
<input type="radio" id="tipoRel" name="entregas" value="entregas">
<label for="entregas">Pastas de Estágios Entregues</label><br>
<input type="radio" id="tipoRel" name="contratos_vencer" value="contratos_vencer">
<label for="contratos_vencer">Contratos a Vencer 30 dias</label> <br>
</div>
</div>
</div>
</div>
<br>
<!--
botões de acão
-->
<div class="btn-acao" style="margin-bottom: 0px;">
<div class="row">
<div class="col-md-2 col-md-offset-1">
<button id="btn-executarRel" type="submit" class="btn btn-primary btn-block" >Executar </button>
</div>
<div class="col-md-2 col-md-offset-1">
<button type="button" id="btn-cancelarRel" class="btn btn-primary btn-block">Voltar</button>
</div>
</div>
</div>
<br>
</form>
</div> <!-- tab pagina 1 -->
</div>
</main>
<!-- JavaScript (Opcional) -->
<!-- jQuery primeiro, depois Popper.js, depois Bootstrap JS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="/js/funcoesCliente.js"></script>
<script type="text/javascript" src="/js/script.js"></script>
</body>
</html>
Agora o código do routes e controllers. No controllers preciso acessar um elemento radio da view
*** botão para submeter a view
<button id="btn-executarRel" type="submit" class="btn btn-primary btn-block" >Executar </button>
*** rota a ser executada ao sonfirmar a execução do relatório
<form action='/contratos/relatorios/RelContratosPrint' method="post" id="relAlunos">
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
arquivo: contratosRoutes.js
var contratosControllers = require('../controllers/contratosControllers.js');
module.exports = (app) => {
app.get('/contratos/relatorios/relContratos', contratosControllers.contratosRel);
app.post('/contratos/relatorios/RelContratosPrint', contratosControllers.printContratosRel);
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
arquivo: contratosControllers.js
const alunosController = require('../models/contratosModels.js');
const cnf_ambiente = require('../../config/config.js');
const moment = require('moment');
module.exports = {
printContratosRel,
}
function printContratosRel(req, res){
console.log("Data Inicial Normal: "+req.body.cad_ini)
console.log("Data Final Normal..: "+req.body.cad_fim)
console.log("++++++++++++++++++++ DATA NO FORMATO DE ENTRADA APÓS O POST ++########################")
// ++++++++++++ BAIXO O ERRO document is not defined
var radios = document.getElementsById("tipoRel");
for (var i = 0; i < radios.length; i++) {
if (radios[i].checked) {
console.log("Escolhido: " + radios[i].value);
}
}
cod_i = req.body.cod_ini;
cod_f = req.body.cod_fim;
atv_i = req.body.atv_ini;
atv_f = req.body.atv_fim;
cad_i = req.body.cad_ini;
cad_f = req.body.cad_fim;
vig_i = req.body.vig_ini;
vig_f = req.body.vig_fim;
sit_i = req.body.sit_ini;
sit_f = req.body.sit_fim;
cur_i = req.body.cur_ini;
cur_f = req.body.cur_fim;
emp_i = req.body.emp_ini;
emp_f = req.body.emp_fim;
cie_i = req.body.cie_ini;
cie_f = req.body.cie_fim;
vlr_i = req.body.vlr_ini;
vlr_f = req.body.vlr_fim;
console.log("Relatório >>>>>>>>>>>>>>>>>>>>>>>> "+cad_i + ' - '+ cad_f);
alunosController.buscarPrintContratosRel(
cod_i, cod_f,
vlr_i, vlr_f,
sit_i, sit_f,
cur_i, cur_f,
emp_i, emp_f,
cad_i, cad_f,
vig_i, vig_f,
atv_i, atv_f,
cie_i, cie_f,
function(err, result){
if(result){
console.log("Encontrei registro de contratos.... Vou tratar das datas..");
for(var i = 0; i < result.length; i++ ){
result[i].cea_dtcadastro = moment(result[i].cea_dtcadastro).format("DD/MM/YYYY");
result[i].cea_dtalteracao = moment(result[i].cea_dtalteracao).format("DD/MM/YYYY");
result[i].cea_vigenciainicial = moment(result[i].cea_vigenciainicial).format("DD/MM/YYYY");
result[i].cea_vigenciafinal = moment(result[i].cea_vigenciafinal).format("DD/MM/YYYY");
}
}
if (err) {
throw err;
} else{
res.render('estagios/relatorios/frm_relContratosPrint.ejs',
{title: 'Contratos',
nomeUsuario: global.nomeUsuario,
codigoUsuario: global.codigoUsuario,
nomeFormulario: req.originalUrl,
obj_contratos: result,
});
}
});
}