为什么我的复选框禁用其他值?

时间:2017-10-10 16:36:00

标签: javascript php jquery checkbox configuration

我将使用多个复选框,每当我更改其中一个复选框的值时,它会使所有其他复选框的值为false。我唯一能想到的是,当值被更改并发送到validate.php时,它还会查找其他值并相应地进行设置。如果是这种情况,我怎么能这样做才能只改变预期值。

JavaScript / JQuery Code Snippet(每个变量都有一个更改函数):

$( 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(更多名称和变量名称的复选框已更改):

<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>

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 个答案:

答案 0 :(得分:1)

问题似乎是

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

请注意,每次刷新&#34;您只发送已更改的变量的状态的页面可以使用:

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

或javascript中的等效内容(请参阅:how to get GET variable's value in javascript?)将新状态附加到其中。

完成后,您的链接应该是这样的

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

其中VALUES包含不同变量的所有先前值(格式为&#34; var1 = value&amp; var2 = value&amp; var3 = value&#34;