2017-10-05 2 views
0

Ce que je suis en train de réaliser est la voie 20 entrées, si l'on est rempli, je veux ajouter une classe à un div parent de cette entrée, si elle devient vide après que je veux la classe à supprimer lui-même du parent. Ce code fait ce que je veux quand je l'exécute dans la console, comment puis-je l'améliorer afin qu'il puisse suivre les entrées et basculer la classe?entrées de piste et classe bascule avec jQuery

$('.input').each(function() { 
    var $input = $(this); 
    if ($input.val()) { 
     var $parent = $input.closest('.card'); 
     $parent.addClass('colored') 
    } 
}); 
+0

Quelqu'un a-t-il aidé? –

Répondre

0

Merci à tous pour les réponses, voici ce qui a fonctionné pour moi après avoir essayé toutes les solutions. J'espère que ça aide quelqu'un d'autre.

function checkInputs() { 
    $('.input').each(function(){ 
     if($(this).val() === ""){ 
      $(this).parent().parent('.unit-card').removeClass('filled'); 
     } else { 
      $(this).parent().parent('.unit-card').addClass('filled'); 
     } 
    }); 
} 
0

Vous pouvez utiliser un événement pour cela. Pour les entrées, jQuery a l'événement input qui se déclenche chaque fois que la valeur d'une entrée change.

$(".input").on("input", function() { 
    if ($(this).val().length === 0) 
     $(this).closest('.card').removeClass("colored"); 
    else 
     $(this).closest('.card').addClass("colored"); 
}); 
0

Votre code vérifie les valeurs lors de l'exécution initiale. Vous devez joindre les événements copy, paste, change, keypress, keydown, keyup et input. Voir par exemple:

$('input').on('copy paste keydown keyup keypress change input', function(){ 
 

 
    var $input = $(this); 
 

 
    if($input.val() == ''){ 
 
    $input.parent('.form-group').addClass('empty'); 
 
    } else { 
 
    $input.parent('.form-group').removeClass('empty'); 
 
    } 
 

 
});
.form-group { 
 
    margin-bottom:10px; 
 
} 
 
.form-group.empty > input { 
 
    border:2px solid red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="form-group"> 
 
    <input name="name" type="text" placeholder="name"/> 
 
</div> 
 
<div class="form-group"> 
 
    <input name="email" type="text" placeholder="email"/> 
 
</div> 
 
<div class="form-group"> 
 
    <input name="address" type="text" placeholder="address"/> 
 
</div>

0

$("input[type='text']").on("keyup",function(){ 
 

 
if($(this).val()!="") 
 
{ 
 
$(this).parent().addClass("active"); 
 
}else{ 
 
$(this).parent().removeClass("active"); 
 
} 
 

 
})
.active{ 
 
background-color:red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
<input type="text" > 
 
</div>

+0

J'ai également essayé l'onchage en premier mais onchange sur les entrées nécessitent de se concentrer sur l'entrée. Alors changez-le avec le keyup ou le keydown sera meilleur. –

+1

Oui je viens de l'éditer @ GüneySaramalı –

0

C'est l'extrait Here. Une fonction keyup() et une vérification si tous les ont fait.