J'ai créé une case à cocher interrupteur à bascule et aplied la logique ci-dessous:jQuery interrupteur à bascule case - changement « cochée » attribut Délai de
1] Si l'utilisateur clique sur le commutateur à bascule class="os_section-slider"
le script vérifiera si le nom de l'élément contenant input
est vérifié.
1-A] Si l'élément est vérifié puis changer pour unChecked et ajouter cet élément dans un tableau nommé os_tagsToRemove
1-B] Si l'élément est décochée changer ensuite à contrôler et ajouter cet élément dans un tableau nommé os_tagsToAdd
HTML
<span class="os_section-name">first</span>
<input type="checkbox" class="os_section-check" id="first" checked="checked">
<label class="os_section-slider" for="first"></label>
<div class="line-space-between"></div>
<span class="os_section-name">second</span>
<input type="checkbox" class="os_section-check" id="second">
<label class="os_section-slider" for="second"></label>
JS
$(".os_section-slider").click(function() {
if($(this).prev().is(":checked")) { //if checked
$(this).prev().attr("checked", false);
var os_tagName = $(this).prev().attr("id").toString();
os_tagsToRemove.push(os_tagName);
os_tagsToAdd.splice($.inArray(os_tagName, os_tagsToAdd),1);
} else { //if unchecked
$(this).prev().attr("checked", true);
var os_tagName = $(this).prev().attr("id").toString();
os_tagsToAdd.push(os_tagName);
os_tagsToRemove.splice($.inArray(os_tagName, os_tagsToRemove),1);
}
});
Mon problème est, quand mes rechargements page et mon interrupteur à bascule apparaît dans une boîte modale et je tente de cliquer sur le bouton de switcher je dois cliquer 2 fois jusqu'à ce que l'attribut checked est ajouté/supprimé.
Le premier clic pousse toujours la valeur dans le tableau ou le supprime du tableau mais ne s'applique pas $(this).prev().attr("checked", true);
ni $(this).prev().attr("checked", false);
. Mais après le deuxième clic sur chaque bouton de commutation, tout fonctionne à partir de ce moment.
Je ne comprends pas comment vous cliquez sur vos étiquettes vides ... Et je ne comprends pas pourquoi vous attachez les événements de clic sur les étiquettes au lieu des cases à cocher. Explique cela. –
@LouysPatriceBessette J'ai besoin de mon script pour modifier l'attribut coché pour chaque élément de la même manière que le code source de la page. Lorsque vous avez une case à cocher par défaut, alors si vous cochez/décochez l'entrée d'un élément, il ne sera pas codé en dur 'checked =" checked "' dans le code source de la page. –
Haa ... ok c'est à propos d'une vérification par défaut ... Attends. –