2017-10-10 13 views
0

J'ai plusieurs cases à cocher que je vais utiliser et chaque fois que je change la valeur de l'un d'entre eux, cela rend la valeur de tous les autres faux. La seule chose à laquelle je pourrais penser est que lorsque la valeur est changée et envoyée à validate.php, elle recherche également les autres valeurs et les ensembles en conséquence. Si c'est le cas, comment pourrais-je faire en sorte que seule la valeur prévue soit changée?Pourquoi mes cases à cocher désactivent-elles d'autres valeurs?

JavaScript/code JQuery Snippet (Il y a une fonction de changement pour chaque variable):

$(document).ready(function() { 
    var music = document.getElementsByName("music_status"); 
    var music_value = document.getElementsByName("music_status")[0].value; 
    var rules = document.getElementsByName("rules_status"); 
    var rules_value = document.getElementsByName("rules_status")[0].value; 
    var serverinfo = document.getElementsByName("serverinfo_status"); 
    var serverinfo_value = document.getElementsByName("serverinfo_status")[0].value; 
    var module1 = document.getElementsByName("module1_status"); 
    var module1_value = document.getElementsByName("module1_status")[0].value; 
    var module2 = document.getElementsByName("module2_status"); 
    var module2_value = document.getElementsByName("module2_status")[0].value; 
    var module3 = document.getElementsByName("module3_status"); 
    var module3_value = document.getElementsByName("module3_status")[0].value; 

    $(music).change(function() { 
     if ($(music_value).val() == 'false') { 
      $(music).val('true'); 
     } else { 
      $(music).val('false'); 
     } 
     window.location.href = 'validate.php?music_status=' + music_value; 
    }) 

    $(rules).change(function() { 
     if ($(rules_value).val() == 'false') { 
      $(rules).val('true'); 
     } else { 
      $(rules).val('false'); 
     } 
     window.location.href = 'validate.php?rules_status=' + rules_value; 
    }) 

}); 

HTML Code Snippet (Avoir plus des cases à cocher avec le nom et les noms de variables changé):

<input type="checkbox" name="music_status" id="cmn-toggle-1" class="cmn-toggle cmn-toggle-round-flat" value="<?php echo $music_status?>" <?php if ($music_status == 'true') {?> checked <?}?>> 
<label for="cmn-toggle-1"></label> 

code validate.php:

if (isset($_GET["music_status"]) && $_GET["music_status"] == 'false') { 
    $config -> SetVar("music_status", 'true', "Music Status"); 
} else { 
    $config -> SetVar("music_status", 'false', "Music Status"); 
} 

if (isset($_GET["rules_status"]) && $_GET["rules_status"] == 'false') { 
    $config -> SetVar("rules_status", 'true', "Rule Status"); 
} else { 
    $config -> SetVar("rules_status", 'false', "Rule Status"); 
} 

if (isset($_GET["serverinfo_status"]) && $_GET["serverinfo_status"] == 'false') { 
    $config -> SetVar("serverinfo_status", 'true', "Server Info Status"); 
} else { 
    $config -> SetVar("serverinfo_status", 'false', "Server Info Status"); 
} 

if (isset($_GET["module1_status"]) && $_GET["module1_status"] == 'false') { 
    $config -> SetVar("module1_status", 'true', "Module 1 Status"); 
} else { 
    $config -> SetVar("module1_status", 'false', "Module 1 Status"); 
} 

if (isset($_GET["module2_status"]) && $_GET["module2_status"] == 'false') { 
    $config -> SetVar("module2_status", 'true', "Module 2 Status"); 
} else { 
    $config -> SetVar("module2_status", 'false', "Module 2 Status"); 
} 

if (isset($_GET["module3_status"]) && $_GET["module3_status"] == 'false') { 
    $config -> SetVar("module3_status", 'true', "Module 3 Status"); 
} else { 
    $config -> SetVar("module3_status", 'false', "Module 3 Status"); 
} 
+1

Vous pouvez vérifier la propriété' checked' de vos cases à cocher au lieu de la propriété 'value' – theGleep

Répondre

1

Le problème semble être

window.location.href = 'validate.php?music_status=' + music_value; 

Notez que chaque fois que vous « rafraîchir » la page que vous envoyer uniquement l'état de la variable qui a changé sur vous pouvez utiliser:

$_SERVER['QUERY_STRING'] // contains the current _GET parameters 

ou un équivalent en javascript (Voir: how to get GET variable's value in javascript?) à ajoutez votre nouveau statut à celui-ci.

Une fois que vous avez terminé, votre lien devrait ressembler à ceci

window.location.href = 'validate.php?' + VALUES + '&music_status= + music_values 

où les valeurs contient toutes les valeurs précédentes des différentes variables (dans le format de « var1 = valeur & var2 = valeur & var3 = value "

+0

Je ne suis pas vraiment sûr de la façon dont j'utiliserais ça. $ vars = $ _SERVER ['QUERY_STRING']; parse_str ($ vars, $ vars_arr); if (isset ($ vars ["état_musique"]) && $ v ars ["music_status"] == false) {Code Ici} –

+0

Vous utiliseriez $ _SERVER ['QUERY_STRING'] pour modifier la redirection. Le problème est que vous ne passez qu'une seule valeur à la page suivante, vous devez tous les passer. – Imme

+0

J'ai trouvé ma propre méthode pour que les autres valeurs de checkbox ne soient pas fausses en changeant simplement mes autres instructions dans le code php à else if puis en changeant simplement == false en == true. Je vais quand même accepter cette réponse, car ce serait une méthode alternative. –