2016-06-01 1 views
0

Le code suivant fonctionne parfaitement sur tous les navigateurs comme vous pouvez le voir sur le code snippet, mais sur IE8, le bouton (link) supprimer est toujours désactivé lorsque je clique sur les cases à cocher, il n'est activé que lorsque je clique sur l'autre bouton qui sélectionne tout.Comment ajouter/supprimer une classe en utilisant jQuery sur IE8?

Avez-vous une idée de la façon de résoudre ce problème? Merci d'avance.

function suppressionMultiple() { 
 
\t var nbrChecked = function() { 
 
\t \t var aptitudesASupprimer = jQuery('#Aptitudes :checked').length; 
 
\t \t var aptitudesPresentes = jQuery('#Aptitudes input:checkbox').length; 
 
\t \t if (aptitudesASupprimer == 0) 
 
\t \t \t jQuery('#supprimer').removeAttr('href').removeClass("actifBtn").addClass("desactifBtn"); 
 
\t \t else 
 
\t \t \t jQuery('#supprimer').attr('href','#').removeClass("desactifBtn").addClass("actifBtn"); 
 
\t }; 
 

 
\t nbrChecked(); 
 
\t jQuery("#desactifBtn input[type=checkbox]").on("change", nbrChecked); 
 
}; 
 

 
function selectionner() { 
 
\t jQuery('#Aptitudes input[type=checkbox]').prop('checked', true); 
 
\t jQuery('#supprimer').attr('href', '#').removeClass("desactifBtn").addClass("actifBtn"); 
 
};
#selectionner { 
 
\t float: left; 
 
} 
 

 
#supprimer { 
 
\t float: right; 
 
} 
 

 
.categorieAptitudes label { 
 
\t display: block; 
 
\t padding-left: 2px; 
 
} 
 

 
#SupAptitudes { 
 
\t margin-top: 0px; 
 
\t margin-bottom: 5px; 
 
\t padding-bottom: 10px; 
 
} 
 

 
a.actifBtn { 
 
\t -webkit-border-radius: 1px; 
 
\t -moz-border-radius: 1px; 
 
\t border-radius: 1px; 
 
\t border: solid thin #929292; 
 
\t text-shadow: none; 
 
\t background: #F6F6F6; 
 
\t background-image: -webkit-linear-gradient(top, #F6F6F6, #DDDDDD); 
 
\t background-image: -moz-linear-gradient(top, #F6F6F6, #DDDDDD); 
 
\t background-image: -ms-linear-gradient(top, #F6F6F6, #DDDDDD); 
 
\t background-image: -o-linear-gradient(top, #F6F6F6, #DDDDDD); 
 
\t background-image: linear-gradient(to bottom, #F6F6F6, #DDDDDD); 
 
\t color: buttontext; 
 
\t text-decoration: none; 
 
\t padding: 3px 8px; 
 
    \t 
 
} 
 

 
a.actifBtn:hover { 
 
\t background-image: -webkit-linear-gradient(top, #DDDDDD, #F6F6F6); 
 
\t background-image: -moz-linear-gradient(top, #DDDDDD, #F6F6F6); 
 
\t background-image: -ms-linear-gradient(top, #DDDDDD, #F6F6F6); 
 
\t background-image: -o-linear-gradient(top, #DDDDDD, #F6F6F6, #DDDDDD); 
 
\t background-image: linear-gradient(to bottom, #DDDDDD, #F6F6F6); 
 
} 
 

 
a.desactifBtn { 
 
\t -webkit-border-radius: 1px; 
 
\t -moz-border-radius: 1px; 
 
\t border-radius: 1px; 
 
\t border: solid thin #929292; 
 
\t text-shadow: none; 
 
\t background: #F6F6F6; 
 
\t background-image: -webkit-linear-gradient(top, #F6F6F6, #DDDDDD); 
 
\t background-image: -moz-linear-gradient(top, #F6F6F6, #DDDDDD); 
 
\t background-image: -ms-linear-gradient(top, #F6F6F6, #DDDDDD); 
 
\t background-image: -o-linear-gradient(top, #F6F6F6, #DDDDDD); 
 
\t background-image: linear-gradient(to bottom, #F6F6F6, #DDDDDD); 
 
\t color: grey; 
 
\t text-decoration: none; 
 
\t padding: 3px 8px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> 
 
<div id="Aptitudes" onchange="suppressionMultiple();"> 
 
    <div class="group"> 
 
    <div class="nomCategorie"> Réinsertion - suivi</div> 
 
    <div class="categorieAptitudes" id="Réinsertion - suivi"> 
 
     <label> 
 
     <input type="checkbox" value="1251"><span class="item-search">Appartement pour mise en situation d'autonomie</span> 
 
     </label> 
 
     <label> 
 
     <input type="checkbox" value="1282"><span class="item-search">Education du patient et de son entourage à domicile</span> 
 
     </label> 
 
     <label> 
 
     <input type="checkbox" value="1293"><span class="item-search">Equipe mobile, suivi à domicile</span> 
 
     </label> 
 
    </div> 
 
    </div> 
 
</div> 
 

 
<div id="SupAptitudes"> 
 
\t <a class="actifBtn" id="selectionner" onclick="selectionner();">Séléctionner tout</a> 
 
\t <a class="desactifBtn" id="supprimer">Supprimer</a> 
 
</div>

+0

Note de version: jQuery est abandonner le support de IE8 ... et IE8 a été abandonnée pendant des années ** ** . essayez d'éviter cela. – Raptor

+0

@Raptor c'est une exigence malheureusement :( – Chinovski

+0

Au lieu de a.actifBtn essayez seulement avec actifBtn dans css – brk

Répondre

-1
var sup = document.querySelectorAll('#supprimer'); 
sup.className -= "classToKeep" 
sup.className += " actifBtn " 

Vous pouvez utiliser javascript natif sur ce point.

+0

Le problème n'est pas dans ajouter/supprimer classe exactement, parce que cela fonctionne dans l'autre cas, mais dans onclick Je pense: – Chinovski

+0

Donc, ajouter/enlever la classe n'est pas votre question, peut-être, vous pouvez le faire sur plnker –

+0

Je l'ai résolu, je viens de changer "Aptitudes" d'id en classe, et au lieu de 'var aptitudesASupprimer = jQuery (' #Aptitudes: vérifié.) de longueur; \t \t var aptitudesPresentes = jQuery ('entrée Aptitudes: case ') de longueur; '' Je mets var aptitudesASupprimer = jQuery (.' Aptitudes:.. vérifié') de longueur; \t \t. var aptitudesPresentes = jQuery ('# Aptitudes input: checkbox'). Et ça a marché. C'est étrange !! – Chinovski

1

Je pense qu'il s'agit du problème avec l'événement de changement est IE7/8. S'il vous plaît voir IE8 & IE7 onchange event is triggered only after repeated selection

changement d'être onclick place pour chaque entrée

 <input type="checkbox" class="mCheck" value="1251"><span class="item-search">Appartement pour mise en situation d'autonomie</span> 

     $(document).on('ready', function(){ 
     $(".mCheck").on("click", function(){ 
      suppressionMultiple(); 
     }); 
    }); 
    function suppressionMultiple() { 
     var nbrChecked = function() { 
      var aptitudesASupprimer = $('.mCheck').is(':checked'); 
      alert(aptitudesASupprimer); 
      if (!aptitudesASupprimer){ 
       $('#supprimer').removeAttr('href').removeClass("actifBtn").addClass("desactifBtn"); 
      } 
      else{ 
       $('#supprimer').attr('href','#').removeClass("desactifBtn").addClass("actifBtn"); 
      } 
     }; 
     nbrChecked();  
    }; 

essayer cette

+1

Je l'ai résolu, je viens de changer "Aptitudes" d'id en classe, et au lieu de var aptitudesASupprimer = jQuery ('# Aptitudes: checked'). Length; var aptitudesPresentes = jQuery ('. Aptitudes input: checkbox'). longueur; Je mets var aptitudesASupprimer = jQuery ('. Aptitudes: checked'). Longueur; var aptitudesPresentes = jQuery ('# Aptitudes input: checkbox'). longueur; et ça a marché. C'est étrange !! – Chinovski