Pesquisar na Comunidade
Mostrando resultados para as tags ''JavaScript''.
Encontrado 433 registros
-
Caros amigos, saudações. Estou com uma pequena dúvida se é possível ser realizado. Preciso passar 2 IDs para o Sistema executar a função, estou utilizando desta forma e gostaria de saber como faço via JS para passar os parâmetro que preciso. Observação: Dentro da TABELA utilizei 2 Forms, para passar os IDS que preciso, funcionou conforme código abaixo. <div class="card-body"> <table id="tab_clie" class="table table-bordered table-hover"> <thead> <tr> <th style="text-align:center; width:10%;">Pedido Nº</th> <th style="text-align:center; width:10%;">Data Pedido</th> <th style="text-align:center; width:32%;">Fornecedor</th> <th style="text-align:center; width:10%;">Status</th> <th style="text-align:center; width:5%;">Ação</th> </tr> </thead> <tbody> <?php foreach ($results as $r) { $dta_ped = date(('d/m/Y'), strtotime($r->dataPedido)); switch ($r->pd_status) { case '1': $status = ' Aberto '; $txt = '#FFFFFF'; //Cor: Branco $cor = '#000000'; //Cor: Preta break; case '2': $status = 'Atendido Total'; $txt = '#FFFFFF'; //Cor: Branco $cor = '#086108'; //Cor: Verde break; case '3': $status = 'Atendido Parcial'; $txt = '#000000'; //Cor: Branco $cor = '#FEA118'; //Cor: Amarelo break; default: $status = 'Cancelado'; $txt = '#FFFFFF'; //Cor: Branco $cor = '#D20101'; //Cor: Vermelho break; } echo '<tr>'; echo '<td width="10%" height="10" style="text-align:center;">'.$r->pd_numero.'</td>'; echo '<td width="10%" height="10" style="text-align:center;">'.$dta_ped.'</td>'; echo '<td width="32%" height="10" style="text-align:left;">'.$r->nome.'</td>'; echo '<td width="10%" height="10" style="text-align:left;"><span class="badge" style="color:'.$txt.'; background-color:'.$cor.'; border-color:'.$cor.'">'.$status.'</span></td>'; echo '<td width="5%" style="text-align:center;">'; ?> <div class="row"> <?php if($this->permission->checkPermission($this->session->userdata('permissao'), 'vPedido')){ ?> <form action="<?= base_url() ?>compras/pedidos/visualizar" method="POST" > <input type="hidden" name="idPedido" value="<?php echo $r->idPedidos; ?>"> <input type="hidden" name="nrPedido" value="<?php echo $r->pd_numero; ?>"> <button class="btn btn-warning" title="Visualizar" style="margin-left:50%; padding: 1px 3px;"><i class="fa fa-search icon-white"></i></button> </form> <?php } if($this->permission->checkPermission($this->session->userdata('permissao'), 'ePedido')){ ?> <form action="<?= base_url() ?>compras/pedidos/editar" method="POST" > <input type="hidden" name="idPedido" value="<?php echo $r->idPedidos; ?>"> <input type="hidden" name="nrPedido" value="<?php echo $r->pd_numero; ?>"> <button class="btn btn-primary" title="Editar" style="margin-left:50%; padding: 1px 3px;"><i class="fa fa-edit icon-white"></i></button> </form> <?php } ?> </div> <?php echo '</td>'; echo '</tr>'; } ?> </tbody> </table> </div> Grato, Cesar.
-
Olá! Estou usando o editor quill em uma página html, sem fazer a instalação com npm, mas usando as api´s via internet com http, no entanto não consigo fazer a tecla enter funcionar para mudança de linha, tentei essa configuração abaixo, mas não funcionou. modules: { syntax: true, toolbar: '#toolbar-container', keyboard: { bindings: { enter: { key: 13, handler: function(range, context) { quill.formatLine(range.index, range.length, { 'align': '' }); } }
-
Caros amigos, saudações. Estou com um problema de cálculo que não estou conseguindo resolver. Tenho uma rotina em Javascript que faz o seguinte cálculo qtde x vrUnit = total. qtde x vrUnit = total 1,23 x 1,00 = 1,23 << até aqui tudo bem. o problema seria fazer o arredondamento para cima para impedir de fazer este cálculo: 0,01 x 0,01 = 0,0001 para digitar o valor estou utilizando esta função: /*Esta função quando o usuário digitar o valor aparece * 1,23 */ function formataDigitacao(i) { //Adiciona os dados para a másrcara var decimais = 2; var separador_milhar = '.'; var separador_decimal = ','; var decimais_ele = Math.pow(10, decimais); var thousand_separator = '$1'+separador_milhar; var v = i.value.replace(/\D/g,''); v = (v/decimais_ele).toFixed(decimais) + ''; var splits = v.split("."); var p_parte = splits[0].toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, thousand_separator); (typeof splits[1] === "undefined") ? i.value = p_parte : i.value = p_parte+separador_decimal+splits[1]; } /*Esta função faz a multiplicação entre Valor Unitário X Quantidade *faz a multiplicação correta */ function calcProd(){ //Obter valor digitado do produto var prod_qtde = document.getElementById("qtde").value; //Remover ponto e trocar a virgula por ponto while (prod_qtde.indexOf(".") >= 0) { prod_qtde = prod_qtde.replace(".", ""); } prod_qtde = prod_qtde.replace(",","."); //Obter valor digitado do produto var valor_unit = document.getElementById("vlrunit").value; //Remover ponto e trocar a virgula por ponto while (valor_unit.indexOf(".") >= 0) { valor_unit = valor_unit.replace(".", ""); } valor_unit = valor_unit.replace(",","."); //Calcula o Valor do Desconto if (valor_unit > 0 && prod_qtde > 0) { calc_total_produto = (parseFloat(valor_unit) * parseFloat(prod_qtde)); var numero = calc_total_produto.toFixed(2).split('.'); //<<== aqui faço o arredondamento das casas decimais de 1,234 p/ 1,23 numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.'); document.getElementById("vlrtotal").value = numero.join(','); } else { if (valor_unit > 0) { document.getElementById("vlrtotal").value = document.getElementById("vlrunit").value; } else { document.getElementById("vlrtotal").value = "0,00"; } } } Grato, Cesar
-
Caros amigos, saudações. Gostaria de poder tirar uma dúvida com os amigos. Como faço uma função para Comparar a Data Digitada pelo o Usuário com a Data Atual ? Data Digitada: 01/09/2024 Exemplo: 25/09/2024 é menor que DATA Atual ====> mensagem: informe uma data válida. 25/09/2024 é igual DATA Atual ===> o sistema libera os INPUT's. Como faço uma comparação com a Data Atual, para não Deixar Gravar Data retroativa a data Atual. Grato, Cesar
-
javascript Adiciona entrada em dicionario por variavel
Rafael Castelhano postou um tópico no fórum Javascript
Olá, quero preencher um dict dinamicamente onde a chave é uma string multidimencional no dict, ex: var dict = {} var path = 'a.b.c' dict[path] = 55 // isso faz dict ficar desta forma {'a.b.c': 55} // mais quero que fique assim {a: {b: {c: 55}}} Como consigo alterar desta forma? -
JavaScript - Orientação em passar parametro para Controller
violin101 postou um tópico no fórum Javascript
Caros amigos, saudações. Estou com uma dúvida e não estou conseguindo resolver. Tenho um SELECT onde eu pego o ID e NOME_CAMPO, até aqui tudo bem. Para evitar erros de saída de produtos por estoque, preciso passar o ID do Centro de Custo, para gerar a Tabela de produtos em estou por cada centro de Custo. Exemplo: Centro de Custo 1 - tem: produto A | produto B | produto C Centro de Custo 2 - tem: produto D | produto E Como consigo pegar via JAVASCRIPT o código do Centro de Custo selecionado e passar para a Controller, para chamar a MODAL ? meu código está assim: VIEW <div class="col-md-6"> <label for="deptsOrigem">Dpto Origem:</label> <div class="input-group mb-3"> <input type="hidden" name="idCentrocusto" id="idCentrocusto"> <input type="text" class="form-control" id="nameCentrocusto" name="nameCentrocusto" style="font-size:15px; font-weight:bold;" placeholder="Pesquisar por Centro de Custo" disabled> <span class="input-group-btn"> <button class="btn btn-primary" type="button" id="btnOrgn" name="btnOrgn" data-toggle="modal" data-target="#modal_deptsOrigem" > <span class="fa fa-search"></span> Buscar </button> </span> </div> </div> <div class="modal fade" id="modal_deptsOrigem"> <div class="modal-dialog modal-lg"> <div class="modal-content"> <div class="modal-header" style="font-size:18px; color:#ffffff; background:#307192;"> <h4 class="modal-title"><strong>Lista do(s) Centro de Custo(s)</strong></h4> </div> <div class="modal-body"> <table id="deptsLista" class="table table-bordered table-hover"> <thead> <tr> <th style="text-align:center;">Código</th> <th style="text-align:center;">Centro de Custo(s)</th> <th style="text-align:center;">Ação</th> </tr> </thead> <tbody id="itensDeptos"> <!---Monta Tabela VIA Ajax---> </tbody> </table> </div> <div class="modal-footer justify-content-center" style="background:#BBAAAA;"> <button type="button" class="btn btn-danger pull-center" data-dismiss="modal">Voltar</button> </div> </div><!-- /.modal-content --> </div><!-- /.modal-dialog --> </div> o JAVASCRIPT está assim: //Função para Chamar o Centro de Custo que o usuário deseja. listaDeptos(); var table = $('#deptsLista').dataTable({ "searching": true, "ordering": true, "info": true, "autoWidth": false, "pageLength": 5, "lengthMenu": [ 5, 10, 25, 50 ], "responsive": true, }); // list all employee in datatable function listaDeptos(){ $.ajax({ type : 'ajax', url : '<?=base_url()?>estoque/consumo/deptsList/', async : false, dataType : 'json', success : function(data){ var html = ''; var i; for(i=0; i<data.length; i++){ var datadpts = data[i].idDepartamento+"*"+data[i].departamento; html += '<tr>'+ '<td width="15%" style="text-align:center; font-size:16px;">'+data[i].idDepartamento+'</td>'+ '<td width="50%" style="text-align:left; font-size:16px;">'+data[i].departamento+'</td>'+ '<td width="10%" style="text-align:center;">'+ '<button type="button" class="btn btn-success btn_orgns" style="margin-right: 1%; padding: 2px 5px;" title="Selecionar Departamento" value="'+datadpts+'"><span class="fa fa-check"></span></button>'+ '</td>'+ '</tr>'; } //Fim - For $('#itensDeptos').html(html); } //Fim - success }); //Fim - ajax } //Fim - function /*---Função para Capturar o Departamento selecionado---*/ $(document).on("click",".btn_orgns",function(){ dpts = $(this).val(); infodpts = dpts.split("*"); $("#idCentrocusto").val(infodpts[0]); $("#nameCentrocusto").val(infodpts[1]); $("#modal_deptsOrigem").modal("hide"); //Função para Atualizar o Status do Botão statusPesqProd(); }); //Função para Gerar a Lista de Produtos por Centro de Custo via AJAX. listaProduts(); var table = $('#prdsLista').dataTable({ "searching": true, "ordering": true, "info": true, "autoWidth": false, "pageLength": 5, "lengthMenu": [ 5, 10, 25, 50 ], "responsive": true, }); // list all employee in datatable function listaProduts(){ $.ajax({ type : 'ajax', url : '<?=base_url()?>estoque/consumo/produtsList/', //< como passo aqui o ID do Centro de Custo Selecionado para Gerar a Lista de Produtos async : false, dataType : 'json', success : function(data){ var html = ''; var i; for(i=0; i<data.length; i++){ var prds = data[i].idProdutos+"*"+data[i].cod_interno+"*"+data[i].descricao+"*"+data[i].prd_unid+"*"+data[i].estoque_atual; html += '<tr>'+ '<td width="15%" style="text-align:center; font-size:16px;">'+data[i].cod_interno+'</td>'+ '<td width="50%" style="text-align:left; font-size:16px;">'+data[i].descricao+'</td>'+ '<td width="15%" style="text-align:center; font-size:16px;">'+data[i].prd_unid+'</td>'+ '<td width="15%" style="text-align:center; font-size:16px;">'+data[i].estoque_atual+'</td>'+ '<td width="12%" style="text-align:center;">'+ '<button type="button" class="btn btn-success btn-prod" style="margin-right: 1%; padding: 2px 5px;" title="Selecionar Produto" value="'+prds+'"><span class="fa fa-check"></span></button>'+ '</td>'+ '</tr>'; } //Fim - For $('#itensProds').html(html); } //Fim - success }); //Fim - ajax } //Fim - function a CONTROLLER está assim: //Função para Criar Lista - Produtos Data Tables com AJAX function produtsList(){ $data = $this->consumo_model->prodsList(); echo json_encode($data); } Grato, Cesar -
Caros amigos, saudações. Estou com uma pequena dúvida, referente a PEGAR AUTOMATICAMENTE a HORA e alimentar o campo INPUT. Tenho uma rotina, que estava aparentemente funcionando corretamente, mas agora estou tendo problema. A rotina, pega a HORA atual e informa automaticamente o INPUT, não estou entendendo porque agora não está mais fazendo. Abaixo a rotina. <div class="col-lg-3"> <label for="cotaHrsinicio">Hora da Abertura<span class="required">*</span></label> <div class="controls"> <input type="time" id="cotaHrsinicio" name="cotaHrsinicio" class="form-control" style="width:100%;" value="" /> <!-- NESSE INPUT A ROTINA INFORMA A DATA ATUAL --> </div> </div> function date_time() { var date = new Date(); //var am_pm = "AM"; var hour = date.getHours(); /* if(hour>=12){ am_pm = "PM"; } */ if (hour == 0) { hour = 12; } if(hour<12){ hour = hour - 12; } if(hour>12){ hour + 12; } if(hour<10){ hour = "0"+hour; } var minute = date.getMinutes(); if (minute<10){ minute = "0"+minute; } var sec = date.getSeconds(); if(sec<10){ sec = "0"+sec; } /* *Formato da Hora (h:m:s) * Passar para a Variável: Hora Atual */ var cotaHrsinicio = document.getElementById("cotaHrsinicio").value = hour+":"+minute; } Grato, Cesar
-
Bom dia. Estou precisando formatar um campo de entrada type text somente para numero com a seguinte formatação. se menor que 999 mostrar dessa forma mesmo, nesse caso seria para centena.dezena.unidade. Tipo 001 até 009 depois 010 até 099 depois 100 até 999 de 1.000 até 999.999 mostrar com o ponto, nesse caso seria para milhar.centena.dezena.unidade. Tipo 001.000 até 001.999 e assim por diante. de 1.000.000 até 9.999.000, nesse caso seria para milhão.milhar.centena.dezena.unidade. aqui mesma ideia.... Parecidos com aqueles campos de preço, que ao digitar os zeros ficam a esquerda até o valor atingirem a unidade correspondente. Tentei adaptar esse que encontrei na net. function moeda(a, e, r, t) { let n = "" , h = j = 0 , u = tamanho2 = 0 , l = ajd2 = "" , o = window.Event ? t.which : t.keyCode; if (13 == o || 8 == o) return !0; if (n = String.fromCharCode(o), -1 == "0123456789".indexOf(n)) return !1; for (u = a.value.length, h = 0; h < u && ("0" == a.value.charAt(h) || a.value.charAt(h) == r); h++) ; for (l = ""; h < u; h++) -1 != "0123456789".indexOf(a.value.charAt(h)) && (l += a.value.charAt(h)); if (l += n, 0 == (u = l.length) && (a.value = ""), 1 == u && (a.value = "0" + r + "0" + l), 2 == u && (a.value = "0" + r + l), u > 2) { for (ajd2 = "", j = 0, h = u - 3; h >= 0; h--) 3 == j && (ajd2 += e, j = 0), ajd2 += l.charAt(h), j++; for (a.value = "", tamanho2 = ajd2.length, h = tamanho2 - 1; h >= 0; h--) a.value += ajd2.charAt(h); a.value += r + l.substr(u - 2, u) } return !1 } Mas sem sucesso. Grato por enquanto.
-
O script abaixo atualiza a página (centro.php) a cada um minuto e dentro desta página terei uma div que não poderá ser atualizada. Tentei colocar esta div como pagina com setInterval de 100 minutos porem ao dar o refresh no centro.php tudo vai junto. Será que isto é possivel? Desde já meu muito obrigado! <script> function atualiza(){ var url = 'centro.php'; $.get(url, function(dataReturn) { $('#centro').html(dataReturn); }); } setInterval("atualiza()",60000); </script>
-
Evitar que o input file seja limpado ao cancelar a seleção
luiz monteiro postou um tópico no fórum Javascript
Bom dia. Eu estou tentando encontrar uma maneira de evitar que após o usuário selecionar, se selecionar, uma imagem, essa seja substituída apenas por outra selecionada. Porém quando o usuário cancela a seleção, o input file remove o arquivo se já foi selecionado anteriormente. Essa é a estrutura que estou usando HTML form action="#" method="post" name="formulario" id="formulario" enctype="multipart/form-data" input type="file" name="file_name[]" br input type="file" name="file_name[]" br button enviar /button /form JS PURO Peguei esse script em um post aqui do stackoverflow e adaptei script type="text/javascript" let formulario = document.querySelector("#formulario"); formulario.addEventListener("change", (e)=>{ e.preventDefault(); var file = e.target.files[0]; if (e.target.files.length === 1 && e.target.files !== undefined && e.target.files !== null && file.type.match('image.*')) { console.log("if okay"); } else { //preciso entender o que devo fazer aqui para verificar se há arquivo no DOM desse target caso, o usuário cancele a seleção, para evitar que se há um arquivo no DOM esse permaneça. console.log(file); //CASO O USUÁRIO CANSELA A SELEÇÃO, RETORNA undefined } }); /script O if está correto, porém o que falta é o que fazer no else. Agradeço desde já. -
Fala pessoal, tudo bem? Tô tentando fazer um pre-loading, mas não consigo de jeito algum. Quero mostrar uma animação enquanto a página é carregada e depois de caregada, esconder a animação e mostrar conteúdo. Aguém pode me ajudar? Segue código abaixo <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>PÁGINA LOAD</title> <style type="text/css"> .loadclass { border: 2px solid #f3f3f3; /* Light grey */ border-top: 4px solid #ffc401; /* Blue */ border-radius: 50%; width: 50px; height: 50px; animation: spin 2s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .conteudo { display:none; } </style> <script> function loading(){ document.getElementsByClassName('loadclass')[0].style.display="none"; document.getElementsByClassName('conteudo').style.display="block"; } </script> </head> <body onLoad="loading()"> <div class="loadclass"></div> <div class="conteudo">SEU CONTEUDO AQUI DENTRO!!!</div> </body> </html>
-
Pessoal, pergunta bem simples. Abaixo tenho o seguinte código: <script> function alerta() { if (window.confirm("Você realmente quer sair?")) { window.open("sair.html"); } } </script> Funciona perfeitamente, só que está abrindo em outra janela e quero que abra na mesma janela. Alguém pode me ajudar?
- 1 resposta
-
- java
- javascript
-
(e mais 1 )
Tags:
-
Oi, gostaria de arrastar imagem e ao soltar formar bloco html, meu bloco de html ficaria com nome, content-1.html, content-2.html, etc Alguem pode me ajudar?
-
Olá a todos! Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP. Uso a função setInterval para atualizar a pagina inclusa dentro da DIV. O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto. Preciso que a pagina inclusa já inicie carregada Meu código JavaScript e a DIV com a pagina PHP <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>
-
Olá! Estou fazendo o upload de arquivos com fetch dessa forma fetch(url, { method: 'POST', headers: {'Content-Type': 'multipart/form-data',}, body: formData }).catch((error) => (console.log("Problemas com o Upload"), error)); estou usando input type=file e criando uma const formData = new FormData(); mas não faz e não dá nenhum erro. estou fazendo o upload com a url="http://localhost/dashboard/dados".
-
Boa tarde pessoal, Eu criei um formulário em que tenho 3 interações: evento click, change e uma chamada ajax. No evento on change ("select#removal_table_from" )eu faço uma chamada ajax onde eu passo como parametro o id do item selecionado e construo uma tabela dinamica com o próprio javascript, após isto, tenho um input em que o usuario coloca um valor de percentual para que eu possa preencher em 3 colunas da tabela que foi criada dinamicamente: moto_atualizado, carro_atualizado e caminhao_atualizado, até aí tudo bem, o codigo está fazendo isso, porém, como a tabela é criada dinamicamente eu preciso de alguma forma enviar o arrayData para meu backend mas quando faço o calculo dentro do loop apos resposta do meu ajax, os valores desses 3 campos chegam como null, não sei se é possível fazer o que pretendo ou se é ainda não sei como faz <code> $(document).ready(function (event) { let arrayData = []; let percentage; let removal_vehicle; let removal_motorcycle; let removal_tuck; let apply_removal = $('#apply_removal'); // apply_removal.on('click', function () { // percentage = $('#percentage').val(); // $('.table-body tr').each(function () { // let veiculo = $(this).find('.veiculo').text(); // let moto = $(this).find('.moto').text(); // let caminhao = $(this).find('.caminhao').text(); // let removal_vehicle = parseFloat(veiculo) + (parseFloat(veiculo) * parseFloat(percentage)) / 100; // let removal_motorcycle = parseFloat(moto) + (parseFloat(moto) * parseFloat(percentage)) / 100; // let removal_tuck = parseFloat(caminhao) + (parseFloat(caminhao) * parseFloat(percentage)) / 100; // arrayData.push({ // removal_vehicle, // removal_motorcycle, // removal_tuck // }) // $(this).find('.veiculo_atualizado').val(removal_vehicle.toFixed(2)); // $(this).find('.moto_atualizado').val(removal_motorcycle.toFixed(2)); // $(this).find('.caminhao_atualizado').val(removal_tuck.toFixed(2)); // }); // }); apply_removal.on('click', function () { percentage = $('#percentage').val(); $('.table-body tr').each(function () { let veiculo = $(this).find('.veiculo').text(); let moto = $(this).find('.moto').text(); let caminhao = $(this).find('.caminhao').text(); removal_vehicle = parseFloat(veiculo) + (parseFloat(veiculo) * parseFloat(percentage)) / 100; removal_motorcycle = parseFloat(moto) + (parseFloat(moto) * parseFloat(percentage)) / 100; removal_tuck = parseFloat(caminhao) + (parseFloat(caminhao) * parseFloat(percentage)) / 100; arrayData.push({ removal_vehicle, removal_motorcycle, removal_tuck }) $(this).find('.veiculo_atualizado').val(removal_vehicle.toFixed(2)); $(this).find('.moto_atualizado').val(removal_motorcycle.toFixed(2)); $(this).find('.caminhao_atualizado').val(removal_tuck.toFixed(2)); console.log('Removal Vehicle:', removal_vehicle); console.log('Removal Motorcycle:', removal_motorcycle); console.log('Removal Truck:', removal_tuck); }); }); $('select#removal_table_from').on('change', function (e) { let table_id = $(this).val(); let action = route('removal.removal-values.show', table_id); $.ajax({ type: "GET", url: action, headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, success: function (data) { $('.table-body').empty(); for (let i = 0; i < data.length; i++) { let carro = parseFloat(data[i].CARRO); let moto = parseFloat(data[i].MOTO); let caminhao = parseFloat(data[i].CAMINHAO); let distancia = data[i].DISTANCIA; let origem = data[i].ORIGEM; let destino = data[i].DESTINO; let localidadeOrigem = data[i].LocalidadeOrigem_ID; let localidadeDestino = data[i].LocalidadeDestino_ID; let newRow = '<tr class="removal-row">' + '<td class="align-middle">' + '<div class="row">' + '<div class="col-1">' + '<span class="font-weight-bold">Origem</span><br>' + '<span class="origem">' + origem + '</span>' + '</div>' + '<div class="col-1">' + '<span class="font-weight-bold">Destino</span><br>' + '<span class="destino">' + destino + '</span>' + '</div>' + '<div class="col-1">' + '<span class="font-weight-bold">KM</span><br>' + '<span class="km">' + distancia + '</span>' + '</div>' + '<div class="col-1">' + '<span class="font-weight-bold">Veículo</span><br>' + '<span class="veiculo">' + carro + '</span>' + '</div>' + '<div class="col-2">' + '<span class="font-weight-bold">Veículo Atualizado</span><br>' + '<input type="text" class="veiculo_atualizado">' + '</div>' + '<div class="col-1">' + '<span class="font-weight-bold">Moto</span><br>' + '<span class="moto">' + moto + '</span>' + '</div>' + '<div class="col-2">' + '<span class="font-weight-bold">Moto Atualizado</span><br>' + '<input type="text" class="moto_atualizado">' + '</div>' + '<div class="col-1">' + '<span class="font-weight-bold">Caminhão</span><br>' + '<span class="caminhao">' + caminhao + '</span>' + '</div>' + '<div class="col-2">' + '<span class="font-weight-bold">Caminhão Atualizado</span><br>' + '<input type="text" class="caminhao_atualizado">' + '</div>' + '</div>' + '</div>' + '</td>' + '</tr>'; $('.table-body').append(newRow); //let row = $('.removal-row:last'); // Calcula o valor atualizado e define nos campos diretamente // let veiculo_atualizado = carro + (carro * percentage) / 100; // let moto_atualizado = moto + (moto * percentage) / 100; // let caminhao_atualizado = caminhao + (caminhao * percentage) / 100; // console.log('PORCENTS: ', percentage); //console.log('Veiculo Atualizado:', veiculo_atualizado, 'Moto Atualizado:', moto_atualizado, 'Caminhao Atualizado:', caminhao_atualizado); // Define os valores diretamente nos campos da nova linha // row.find('.veiculo_atualizado').val(veiculo_atualizado.toFixed(2)); // row.find('.moto_atualizado').val(moto_atualizado.toFixed(2)); // row.find('.caminhao_atualizado').val(caminhao_atualizado.toFixed(2)); arrayData.push({ carro, moto, caminhao, distancia, origem, destino, localidadeOrigem, localidadeDestino, removal_vehicle, removal_motorcycle, removal_tuck }); } $('#copy_data_table').val(JSON.stringify(arrayData)); } }); }); //javascript para o formulario de cadastro // $(document).ready(function (event) { $('#uf').change(function () { let code_city = $(this).val(); let deposit = localStorage.getItem('selected_deposit_id'); let action = route('removal.removal-values.cities', code_city); $.ajax({ type: "POST", url: action, headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, data: { code_city: code_city }, success: function (data) { $('#city').empty(); $('#deposit').empty(); for (let i = 0; i < data.cities.length; i++) { $('#city').append('<option value="' + data.cities[i].NM + '">' + data.cities[i].NM + '<option>'); } if (data.deposits.length > 0) { for (let i = 0; i < data.deposits.length; i++) { $('#deposit').append('<option value="' + data.deposits[i].NM + '">' + data.deposits[i].NM + '<option>'); } } else { // $('#deposit').prop('disabled', true); // $('#city').prop('disabled', false); } $('#city').trigger('change'); } }); }); $('#deposit').on('change', function () { depositId = $(this).val(); localStorage.setItem('selected_deposit_id', depositId); }); $('#uf_destiny').change(function () { let code_city = $(this).val(); let depositDestiny = localStorage.getItem('selected_deposit_destiny_id'); let action = route('removal.removal-values.cities', code_city); $.ajax({ type: "POST", url: action, headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, data: { code_city: code_city }, success: function (data) { $('#city_destiny').empty(); $('#deposit_destiny').empty(); for (let i = 0; i < data.cities.length; i++) { $('#city_destiny').append('<option value="' + data.cities[i].NM + '">' + data.cities[i].NM + '</option>'); } if (data.deposits.length > 0) { // $('#deposit_destiny').prop('disabled', false); //$('#city_destiny').empty(); // $('#city_destiny').prop('disabled', true); for (let i = 0; i < data.deposits.length; i++) { $('#deposit_destiny').append('<option value="' + data.deposits[i].NM + '">' + data.deposits[i].NM + '</option>'); } } else { // $('#deposit_destiny').prop('disabled', true); // $('#city_destiny').prop('disabled', false); } $('#city_destiny').trigger('change'); } }); }); $('#deposit_destiny').on('change', function () { let depositDestinyId = $(this).val(); localStorage.setItem('selected_deposit_destiny_id', depositDestinyId); }); }); </code>
-
Olá Achei esse script aqui no fórum mesmo: $.validator.addMethod( "customEmail", function (value, element) { return this.optional(element) || /^[\w-\.]+@fulano\.com\.br$/i.test(value); }, "Por favor, insira um e-mail válido com o domínio @fulano.com.br" ); $("#formulario").validate({ ignore: ".ignore", rules: { empresa: { required: true }, nome: { required: true }, contato: { required: true }, celular: { required: true }, email: { required: true, email: true, customEmail: true }, }, }); Testei e funcionou perfeitamente, mas gostaria que liberasse mais e-mails válidos, ao invés de apenas um. Tem como fazer? Se alguém puder ajudar, fico muito grato.
- 1 resposta
-
- javascript
- validação
-
(e mais 1 )
Tags:
-
Como posso melhorar esse código javascript encapsulado e usando método imutável?
eiwes postou um tópico no fórum Javascript
Eu tenho esse código, mas preciso retornar funções puras em vez de funções mutáveis. É possível? Talvez usando OOP? Não sei como melhorar isso. Tentei retornar os valores de cada função, mas não obtive sucesso. import { AssetStatusType } from '@domain/interfaces/common' import { BothComponentType, ComponentsType, GroupFiltersType, OperationType, OverviewModelType, PendenciesOverviewType, PendenciesType, StructurePendenciesCount, StructureStatusCount } from '../../types' const updateStatusCount = ( statusCount: StructureStatusCount, status: AssetStatusType ) => { statusCount[status] = (statusCount[status] || 0) + 1 } const updatePendenciesCount = ( pendenciesCount: StructurePendenciesCount, key: AssetStatusType, subKey: OperationType | PendenciesOverviewType ) => { pendenciesCount[key] = pendenciesCount[key] ?? {} pendenciesCount[key][subKey] = (pendenciesCount[key]?.[subKey] || 0) + 1 } const processOverviewPendencies = ( pendencies: PendenciesType[] | null | undefined, pendenciesCount: StructurePendenciesCount, countedIds: Set<string>, id: string ) => { if (pendencies?.length) { for (const { state, pendencyType } of pendencies) { const uniqueId = `${state}-${pendencyType}-${id}` if (!countedIds.has(uniqueId)) { updatePendenciesCount(pendenciesCount, state, pendencyType) countedIds.add(uniqueId) } } } } const processOverviewComponents = ( components: ComponentsType[], isGroupByTree: boolean, statusCount: StructureStatusCount, pendenciesCount: StructurePendenciesCount, countedIds: Set<string>, id: string, type: BothComponentType ) => { for (const { pendencies, status, operationType } of components) { if (isGroupByTree && type === 'location') { updateStatusCount(statusCount, status) if (operationType) { updatePendenciesCount(pendenciesCount, status, operationType) } } processOverviewPendencies(pendencies, pendenciesCount, countedIds, id) } } const processOverviewData = ( data: OverviewModelType[], groupBy: GroupFiltersType, statusCount: StructureStatusCount, pendenciesCount: StructurePendenciesCount, countedIds: Set<string> ) => { const isGroupByTree = groupBy === 'tree' const isGroupByAsset = groupBy === 'asset' for (const { id, status, components, operationType, type } of data) { if (isGroupByAsset || type === 'asset') { updateStatusCount(statusCount, status) if (operationType) { updatePendenciesCount(pendenciesCount, status, operationType) } } processOverviewComponents( components, isGroupByTree, statusCount, pendenciesCount, countedIds, id, type ) } } export const calculateOverviewCounts = ( data: OverviewModelType[], groupBy: GroupFiltersType ) => { const statusCount: StructureStatusCount = {} as StructureStatusCount const pendenciesCount: StructurePendenciesCount = {} as StructurePendenciesCount const countedIds = new Set<string>() processOverviewData(data, groupBy, statusCount, pendenciesCount, countedIds) return { ...statusCount, pendencies: pendenciesCount } } Existe uma maneira mais limpa e elegante de fazer isso? Preciso retornar um objeto como este: // calculateOverviewCounts return this { pendencies: StructurePendenciesCount; working: number; inAlert: number; warning: number; stopped: number; off: number; } StructurePendenciesCount é:- 1 resposta
-
- javascript
- typescript
-
(e mais 1 )
Tags:
-
Não consigo iniciar um projeto nodejs dá um erro que não permite prosseguir
belann postou um tópico no fórum Javascript
Olá! Não consigo iniciar um programa usando nodejs, babel e express npm start > nt-api@1.0.0 start > babel-node index.js C:\Users\ar\nt-api\node_modules\babel-core\lib\transformation\file\options\option-manager.js:328 throw e; ^ Error: Couldn't find preset "@babel/env" relative to directory "C:\\Users\\ar\\nt-api" at C:\Users\ar\nt-api\node_modules\babel-core\lib\transformation\file\options\option-manager.js:293:19 at Array.map (<anonymous>) at OptionManager.resolvePresets (C:\Users\ar\nt-api\node_modules\babel-core\lib\transformation\file\options\option-manager.js:275:20) at OptionManager.mergePresets (C:\Users\ar\nt-api\node_modules\babel-core\lib\transformation\file\options\option-manager.js:264:10) at OptionManager.mergeOptions (C:\Users\ar\nt-api\node_modules\babel-core\lib\transformation\file\options\option-manager.js:249:14) at OptionManager.init (C:\Users\ar\nt-api\node_modules\babel-core\lib\transformation\file\options\option-manager.js:368:12) at compile (C:\Users\ar\nt-api\node_modules\babel-register\lib\node.js:103:45) at loader (C:\Users\ar\nt-api\node_modules\babel-register\lib\node.js:144:14) at Object.require.extensions.<computed> [as .js] (C:\Users\ar\nt-api\node_modules\babel-register\lib\node.js:154:7) at Module.load (node:internal/modules/cjs/loader:1207:32) Node.js v21.2.0 -
foreach ($sql as $key => $item): ?> <tr> <th class="small"><?php echo $item['ID']; ?></th> <th class="small"><?php echo $item['CODFIL']; ?></th> <th class="small"><?php echo $item['NUMPED']; ?></th> <th class="small"><?php echo $item['CODPRO']; ?></th> <th class="small"><?php echo $item['NOMCLI']; ?></th> <th class="small"><?php echo $item['QTDFAT']; ?></th> <th class="small"><?php echo $item['CIDCLI']; ?></th> <th class="small"><?php echo $item['CPLIPD']; ?></th> <th class="small"><?php echo $item['NOMTRA']; ?></th> <th class="small"><?php echo $item['NOMMOT']; ?></th> <th class="small"><input class="form-control form-control-sm" type="text" style="width: 60; text-align: center; margin-right: auto; margin-left: auto"></th> <th class="small"> <select class="form-control form-control-sm" id="poscar"> <option><?php echo $item['POSCAR']; ?></option> <option value="D">D</option> <option value="C">C</option> <option value="L">L</option> </select> </th> <th class="small"><?php echo $item['DATCHE']; ?></th> <th> <input TYPE="submit" id="botao" value="Enviar" > </th> </tr> <?php endforeach; ?>
-
Estou tentando gerar uma sugestão do proximo código do plano de contas mas a minha função não esta fazendo corretamente e não estou conseguindo ter o código correto, no caso abaixo quando eu clicar em uma conta 2.1 ele deve me sugerir 2.1.1 se ja tiver ele sugere o proximo disponivel naquela hierarquia e assim para os de mais , alguem ja vez isso ou e tem uma dica vou disponibilizar meu codigo ele faz uma coisa semelhamente mas ele incrementa mais um depois e não ta fazendo correto 2 Passivo 2.1 Passivo Circulante 2.1.1 Impostos 2.1.1.1 FUNRURAL 2.1.1.2 ICMS ST 2.1.2 Contas a Pagar 2.1.2.1 Fornecedores 2.1.2.2 Produtores 2.1.2.3 Compradores 2.1.2.4 Motoristas 2.2 Passivo Não Circulante 2.2.1 Empréstimo bancário (longo prazo) 2.2.1.1 Empréstimo banco ``` <script> // Obtém a lista de contas const contas = document.querySelectorAll('.conta'); // Adiciona um ouvinte de evento para cada conta contas.forEach(conta => { conta.addEventListener('click', () => { // Obtém o código da conta clicada const codigoAtual = conta.getAttribute('data-codigo'); // Calcula o próximo código considerando o nível const proximoCodigo = calcularProximoCodigo(codigoAtual); // Verifica se o próximo código já existe no mesmo nível const proximoCodigoExiste = verificarExistenciaCodigo(proximoCodigo); if (proximoCodigoExiste) { alert(`O próximo código ${proximoCodigo} já existe no mesmo nível.`); } else { // Exibe o próximo código //document.getElementById('proximo-codigo').innerText = `Próximo código: ${proximoCodigo}`; $('#codestrutural').val(proximoCodigo); $('#cadcontasmodal').modal('show'); var set = setInterval(function(){ $('#desc').focus(); clearInterval(set); },600); } }); }); // Função para calcular o próximo código com base no código atual e nível function calcularProximoCodigo(codigoAtual) { // Quebra o código atual em partes const partes = codigoAtual.split('.'); if(partes.length == 1){ // Se for o primeiro nível, adiciona '.1' const proximoCodigo = partes[0]+'.1'; return proximoCodigo; }else{ const ultimoNumero = parseInt(partes.pop(), 10) + 1; // Adiciona o novo número à lista partes.push(ultimoNumero); // Junta as partes para formar o novo código const proximoCodigo = partes.join('.'); return proximoCodigo; } // Incrementa o último número } // Função para verificar se um código já existe no mesmo nível function verificarExistenciaCodigo(proximoCodigo) { // Obtém todos os elementos da tabela com a classe 'conta' const contas = document.querySelectorAll('.conta'); // Extrai o nível do próximo código const nivelProximoCodigo = proximoCodigo.split('.').length; // Verifica se o código já existe no mesmo nível for (const conta of contas) { const codigoExistente = conta.getAttribute('data-codigo'); const nivelCodigoExistente = codigoExistente.split('.').length; if (nivelProximoCodigo === nivelCodigoExistente && codigoExistente.startsWith(proximoCodigo)) { return true; } } return false; } </script> ```
-
Pessoal tenho o seguinte código para duplicar linha do formulário, tudo funciona perfeitamente. var controleCampo = 1; function adicionarCampo() { controleCampo++; //console.log(controleCampo); document.getElementById('formulario').insertAdjacentHTML('beforeend', '<div class="form-group" id="campo' + controleCampo + '"><label></label><input type="hidden" name="agenda_id" id="num_dente" value="<?php echo $id_agenda ?> required "/><label class="form-label"> Dente: </label><input type="text" class="formcodac-text-input-dente" name="num_dente[]" id="num_dente" placeholder="Nº Dente" /><label class="form-label"> Obs: </label><input type="text" class="formcodac-text-input-obs" name="obs[]" id="obs" placeholder="Observações required "/><label class="form-label"> Valor: </label><input type="text" class="formcodac-text-input-valor" name="valor[]" id="valor" placeholder="Valor required "/> <button class="btn btn-danger" type="button" id="' + controleCampo + '" onclick="removerCampo(' + controleCampo + ')"> X </button></div>'); } function removerCampo(idCampo){ //console.log("Campo remover: " + idCampo); document.getElementById('campo' + idCampo).remove(); } Porem eu preciso incluir um select no formulário com uma consulta php, não entendo do Java script, alguém poderia me ajudar, o select é esse: <label class="form-label">Proce</label> <select name="proce_id[]" class="formcodac-text-input-dente" id="proce_id" required> <option selected >Selecione</option> <?php $proce = $pdo->prepare("SELECT * FROM procedimentos"); $proce->execute(); if($proce->rowCount() > 0){ while($row=$proce->fetch(PDO::FETCH_ASSOC)){ echo'<option value="'.$row['id_proce'].'">'.$row['nome_proce'].'</option>'; }} ?> </select>
- 2 respostas
-
- javascript
- php
-
(e mais 1 )
Tags:
-
Estou implementando testes e2e com cypress em um projeto web com react, para realizar criação de contas eu preciso de cpf e cnpj válidos e ai que ta o problema, cada vez que um cpf é usado ele é invalidado então minha idéia era gerar eles a cada execução. Eu conheço vários sites que fazem isso como esse gerador de cpf e o gerador de cnpj, mas via código alguem conhece uma lib js para fazer essa geração em tempo de execução?
- 1 resposta
-
- unit tests
- e2e tests
-
(e mais 3 )
Tags:
-
Pegar class e id gerado dinamicamente em requisição ajax (javascript) e php
Danilo - Jesus voltará! postou um tópico no fórum Javascript
Olá pessoal, tenho uma div a qual através de um select categorias eu trago dados de empresas do banco, aí preciso clicar nas listagens das empresas e pegar o ID quando clica no checkbox e gravar pelo ajax novamente na session feita no arquivo php tipo um carrinho de compras, que essa parte já tenho... só não to conseguindo pegar os ids gerados dinamicamente no retorno feito do ajax, eles aparecem com F12 ao inspecionar, mas não aceita eu clicar para pegar o ID, acho que é algo de DOM, mas não to sabendo fazer... alguém aí saberia me ajudar como pegar esses ids ao clicar, já que eles vem dinamicamente? obrigado- 2 respostas
-
- ajax
- javascript
-
(e mais 2 )
Tags:
-
Bom dia Uso esse código para validação de formulário: $("#formulario").validate({ ignore: ".ignore", rules: { empresa:{required: true}, nome:{required: true}, contato:{required: true}, celular:{required: true}, email:{required: true, email: true}, } }); mas preciso inserir uma validação que apenas permita determinado e-mail, por exemplo, apenas e-mails com @fulano.com.br são permitidos. Se alguém puder me ajudar, fico grato.