Advertisement
mushroomh3ad

currency-input-mask2

Oct 7th, 2024
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 5 3.88 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <title>Range Slider com Máscara Monetária - Bootstrap 4</title>
  7.  
  8.     <!-- Bootstrap 4 CSS -->
  9.     <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
  10.    
  11.     <style>
  12.         .slider-labels {
  13.             display: flex;
  14.             justify-content: space-between;
  15.             margin-top: 10px;
  16.         }
  17.  
  18.         .slider-container {
  19.             margin-top: 20px;
  20.         }
  21.     </style>
  22. </head>
  23. <body>
  24.  
  25.     <div class="container mt-5">
  26.         <div class="row justify-content-center">
  27.             <div class="col-md-6">
  28.                 <!-- Campo de input para mostrar o valor com máscara monetária -->
  29.                 <div class="form-group">
  30.                     <label for="inputValor">Valor:</label>
  31.                     <input type="text" class="form-control" id="inputValor" min="0" max="600000" value="300000">
  32.                 </div>
  33.  
  34.                 <!-- Range Slider logo abaixo do input -->
  35.                 <div class="slider-container">
  36.                     <input type="range" class="custom-range" id="slider" min="0" max="600000" step="1000" value="300000">
  37.                 </div>
  38.  
  39.                 <!-- Rótulos de mínimo e máximo para o slider -->
  40.                 <div class="slider-labels">
  41.                     <span id="min-label"></span>
  42.                     <span id="max-label">Max: R$ 600.000,00</span>
  43.                 </div>
  44.             </div>
  45.         </div>
  46.     </div>
  47.  
  48.     <!-- jQuery e jQuery Mask Plugin -->
  49.     <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  50.     <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.16/jquery.mask.min.js"></script>
  51.     <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.bundle.min.js"></script>
  52.  
  53.     <script>
  54.         $(document).ready(function() {
  55.             // Aplicar a máscara no campo de input ao carregar a página
  56.             $('#inputValor').mask('000.000.000,00', {reverse: true});
  57.  
  58.             // Definir o valor inicial formatado corretamente
  59.             let valorInicial = $('#slider').val();
  60.             $('#inputValor').val(formatCurrency(valorInicial));
  61.  
  62.             // Função para formatar o valor como moeda
  63.             function formatCurrency(value) {
  64.                 return 'R$ ' + parseInt(value).toLocaleString('pt-BR', {minimumFractionDigits: 2});
  65.             }
  66.  
  67.             // Atualizar o valor do input conforme o slider muda
  68.             $('#slider').on('input', function() {
  69.                 var valorSlider = $(this).val();
  70.                 var valorFormatado = formatCurrency(valorSlider);
  71.                 $('#inputValor').val(valorFormatado);
  72.             });
  73.  
  74.             // Quando o usuário digitar manualmente, manter o "R$" no campo
  75.             $('#inputValor').on('blur', function() {
  76.                 console.log("valorInput: ", $(this).val());
  77.                 if ($(this).val() === "") {
  78.                     $(this).val(formatCurrency($('#slider').val())); // Aplicar formatação correta com "R$"
  79.                 } else {
  80.                     var valorInput = $(this).val().replace(/\D/g, ''); // Remover todos os caracteres não numéricos
  81.                     if (valorInput) {
  82.                         // Corrigir valor em centavos: divisível por 100 para trabalhar com reais
  83.                         var valorNum = parseInt(valorInput) / 100;
  84.                         if (!isNaN(valorNum)) {
  85.                             $(this).val(formatCurrency(valorNum)); // Aplicar formatação correta com "R$"
  86.                             $('#slider').val(valorNum); // Atualizar o slider com o valor correto
  87.                         }
  88.                     }
  89.                 }
  90.  
  91.             });
  92.         });
  93.     </script>
  94.  
  95. </body>
  96. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement