Q: Fazer a borda do input piscar Gostaria de sinalizar quando o input de um form estiver errado.
Estou usando jQuery. Na minha cabeça imaginei isso:
if ($("#campo1").val() < 0){
    var i;
    for (i = 0; i < 10; i++) {
        $('#campo2').attr('style', 'border-color: red');
        sleep(1000);
        $('#campo2').attr('style', 'border-color: #cccccc');
        sleep(1000);
    }
}

Mas não esta funcionando. Certamente na prática não deve ser assim.

A: Com for você não consegue fazer isso. Poderia usar uma função recursiva, desta forma:


var temp1, temp2;
if ($("#campo1").val() < 0){
   let i = 0;
   function pisca(){
      $('#campo2').css('border-color', 'red');
      if(i < 10){
         temp1 = setTimeout(function(){
            $('#campo2').css('border-color', '#ccc');
            temp2 = setTimeout(pisca, 500);
            i++;
         }, 500);
      }
   }
   pisca();
}

$("#campo1").on("input", function(){

   if(this.value > -1){
      clearTimeout(temp1);
      clearTimeout(temp2);
   }

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="campo1" type="number" value="-1">
<input id="campo2" type="text">


