"adicionar produtos ao carrinho"
Bootstrap 4.1.1 Snippet by stefanyTeles

<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css"> <script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <!------ Include the above in your HEAD tag ----------> <div class="container mt-3"> <div class="row"> <div class="col"> <div class="card"> <div class="card-header"> Carrinho </div> <div class="card-block"> <!--escolher o produtos depois vamos direcionar para a parte de pagamento --> <form class="form-inline"> <select class="form-control" id="nmProduto" style="max-width: 300px;"> <option value="">Selecione o Produto</option> <option>transporte:Ônibus</option> <option>transporte:Avião</option> <option>Local de ida e volta:Belo Horizonte</option> <option>Local de ida e volta:</option> <option> Local de ida e volta: </option> <option>Local de ida e volta:</option> <option>Local de ida e volta:</option> <option>Local de ida e volta:</option> <option>Hospedagem:Pousada</option> <option>Hospedagem:Hotel</option> <option>Hospedagem:Hoster</option> <option>Dias:</option> <option>Destino:Goiás - Aragarças </option> <option>Destino: Mato Grosso do Sul - Campo Grande : indaia parque hotel</option> <option>Destino: Distrito Federal - Lets Idea Brasilia hotel</option> <option>Destino: Espirito Santo - Vitória : Guesthouse Mata da Praia</option> <option>Destino: Minas gerais -capitolio : balneario do lago hotel</option> <option>Destino: Sao Paulo -Guarujá : ferraretto Hotel </option> <option>Destino: Rio de Janeiro - hotel Arpoador</option> <option>Destino: Paraná- ilha do mel - pousada ilha do mel </option> <option>Destino: Rs - porto alegre : caminhos de nazare Oyo</option> <option>Destino: Santa catarina - florianopolis : sunset backpackers</option> </select> <!-- idicar quantidade de produtos --> <label class="sr-only" for="inlineFormInput">Quantidade</label> <input type="text" class="form-control mb-2 mr-sm-2 mb-sm-0 ml-sm-2" id="qtProduto" placeholder="Quant" style="width:70px"> <label class="sr-only" for="inlineFormInput">Valor</label> <input type="text" class="form-control mb-2 mr-sm-2 mb-sm-0" id="vlProduto" placeholder="Valor (R$)" style="width:98px"> <button type="submit" class="btn btn-primary" id="btnAdicionarProduto">+</button> <p class="text-danger ml-3 pt-2 invisible" id="msgValidaForm">Favor preencher <strong>todos os campos</strong> do produto!</p> </form> <table class="table table-sm table-striped mt-3 table-produtos"> <thead> <tr> <th style="max-width: 600px;">Produto</th> <th>Quantidade</th> <th class="text-right pr-5">Valor (R$)</th> <th class="text-right pr-5 vlTotalProduto">Total</th> <th>Ação</th> </tr> </thead> <tbody> </tbody> <tfoot class="invisible"> <tr> <th></th> <th></th> <!-- somar o valor total--> <th class="text-right">SubTotal ❯</th> <th class="text-right pr-5" id="vlTotalPedido"></th> <th></th> </tr> </tfoot> </table> </div> </div> </div> </div> </div>
$("document").ready(function(){ /* Produto recebe o foco ao chamar o sistema */ $("#nmProduto").chosen().trigger('chosen:activate'); /* Quando o produto for selecionado, a quantidade recebe o foco */ $("#nmProduto").change(function(){ $("#qtProduto").focus(); }) /* Adiciona a máscara ao input do valor do produto ( plugin mask utilizado ) */ $('#vlProduto').mask("00000.00",{reverse: true}); /* Adiciona a máscara ao input de quantidade do produto ( plugin mask utilizado ) */ $('#qtProduto').mask("00000",{reverse: true}); $("#btnAdicionarProduto").on('click', function($e){ /* Evita que o evento ocorra */ $e.preventDefault(); /* Adiciona os produtos somente se o formulário for preenchido */ if(validaForm()) { /* Declarando a variável tb */ var tb; /* preenchendo informações na variável tb para inserção no tbody da tabela */ tb = "<tr><td>" + $("#nmProduto").val() + "</td>" + "<td>" + $("#qtProduto").val() + "</td>" + "<td class=\"text-right pr-5\">" + ($("#vlProduto").val() * 1).toFixed(2) + "</td>" + "<td class=\"text-right pr-5\">" + ( $("#vlProduto").val() * $("#qtProduto").val() ).toFixed(2) + "</td>" + "<td><button class=\"btn btn-light btn-sm delete text-danger\">✖</button></td></tr>"; /* Adiciona a variável tb acima que contém os dados do produto no tbody da tabela. Estas informações são inseridas no final do tbody */ $("tbody").append(tb); /* Após inserção da linha do produto, os valores do pedido são atualizados */ atualizaVlPedido(); /* Se existir mais que 1 item no pedido, é removido a classe invisible do foot da tabela, mostrando assim o valor total do pedido */ if($(".table-produtos tbody tr").length > 0) $(".table-produtos tfoot").removeClass("invisible"); /* As 3 linhas abaixo redefinem os campos de entrada do produto para deixando-os vazios*/ $("#nmProduto").val('').trigger("chosen:updated"); $("#vlProduto").val(''); $("#qtProduto").val(''); /* Define o foco para a seleção de produtos */ $("#nmProduto").chosen().trigger('chosen:activate'); } }) /* Ao clicar na ação delete remove a linha dinamicamente da tabela */ $(document).on("click",".delete",function() { /* Remove a linha referente ao produto clicado */ $(this).parent().parent().remove(); /* Se existir somente um produto no pedido, e for removido, o foot da tabela fica invisível O foot é usado para mostrar o valor total do pedido */ if($(".table-produtos tbody tr").length === 0) $(".table-produtos tfoot").addClass("invisible"); /* Após exclusão da linha, os valores do pedido são atualizados */ atualizaVlPedido(); }) /* Validação do Formulário */ function validaForm() { var formValid = true; if($("#nmProduto").val() === "") formValid = false; if($("#vlProduto").val() === "") formValid = false; if($("#qtProduto").val() === "") formValid = false; if(!formValid) { /* Remove a classe invisible do elemento msgValidaForm */ $("#msgValidaForm").removeClass("invisible") /* Após 4 segundo a mensagem desaparece com a classe invisible sendo novamente adicionada */ setTimeout(function(){ $("#msgValidaForm").addClass("invisible") }, 4000); return false; } else return true; } /* Atualiza Valor Total do Pedido */ function atualizaVlPedido() { /* Define o valor do pedido */ var vlTotalPedido = 0; /* Varre todos os valores dos produtos da tabela */ $(".table-produtos tbody tr td:nth-child(4)").each(function() { vlTotalPedido += parseFloat($(this).text()); }) /* Atualiza o valor do pedido na tabela */ $("#vlTotalPedido").text(vlTotalPedido.toFixed(2)); } })

Related: See More


Questions / Comments: