Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

225
Visualizações
¿Cómo agregar for loop al siguiente JavaScript para validar las entradas?

este es mi javascript que funciona para campos de entrada individuales pero quiero que funcione para entradas múltiples.

aquí, si trato de insertar un valor para input class=adv más que el valor de entrada fijo de class=full , no lo permitirá

 var $full = $('[class=full]'); var $adv = $('[class=adv]'); $adv.on('keyup keydown', function(e) { var fullPay = parseInt($full.val(), 10); var advPay = parseInt($adv.val(), 10); //tell the parser it is base 10 if (advPay > fullPay && e.keyCode !== 46 // keycode for delete && e.keyCode !== 8 // keycode for backspace ) { e.preventDefault(); $adv.val(''); } });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input type="number" name="full" class="full" value="5"> <input type="number" name="adv" class="adv" />

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

La línea efectiva:

 $('[class=full]').val()

solo tomará el primer elemento con clase "full".

Debe usar la navegación DOM relativa dentro del controlador, por ejemplo:

 $(this).prev().val()

Similar a $adv.val() , use $(this).val() y $(this).val('') para borrar la entrada actual.

También puede usar el evento input que capturará más eventos, como pegar con el mouse.

 $('[class=adv]').on('input', function(e) { var fullPay = parseInt($(this).prev().val(), 10); var advPay = parseInt($(this).val(), 10); if (advPay > fullPay && e.keyCode !== 46 // keycode for delete && e.keyCode !== 8 // keycode for backspace ) { e.preventDefault(); $(this).val(''); } });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input type="number" name="full" class="full" value="5"> <input type="number" name="adv" class="adv" /> <br/> <input type="number" name="full" class="full" value="55"> <input type="number" name="adv" class="adv" /> <br/> <input type="number" name="full" class="full" value="555"> <input type="number" name="adv" class="adv" />


Usar .next() o .prev() significará que su html es frágil (cualquier cambio menor romperá el js); una mejor solución sería envolver cada par:

 $('[class=adv]').on('input', function(e) { var fullPay = parseInt($(this).closest(".inputgroup").find(".full").val(), 10); var advPay = parseInt($(this).val(), 10); if (advPay > fullPay && e.keyCode !== 46 // keycode for delete && e.keyCode !== 8 // keycode for backspace ) { e.preventDefault(); $(this).val(''); } });
 .inputgroup { padding:5px 0 5px 0; border-bottom: 1px solid #CCC; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class='inputgroup'> <input type="number" name="full" class="full" value="5"> <input type="number" name="adv" class="adv" /> </div> <div class='inputgroup'> <input type="number" name="full" class="full" value="55"> <input type="number" name="adv" class="adv" /> </div> <div class='inputgroup'> <input type="number" name="full" class="full" value="555"> <input type="number" name="adv" class="adv" /> </div>

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda