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

标签 javascript php jquery checkbox configuration

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

JavaScript/JQuery 代码片段(每个变量都有一个变化函数):

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

<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");
}

最佳答案

问题好像是

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

请注意,每次“刷新”页面时,您只发送更改后的变量的状态,您可以使用:

$_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 包含不同变量的所有先前值(格式为“var1=value&var2=value&var3=value”

关于javascript - 为什么我的复选框会禁用其他值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46671696/

相关文章:

php - 如何在不连接的情况下在 PHP 中获取服务器 MySQL 版本

jquery - 如何为现有类(wordpress)增加更多值(value)?

javascript - 有没有办法在javascript中定义隐式转换运算符?

javascript - 检查 Windowsize React 组件

php - 无法将输入的 $username 插入表中

javascript - 表单验证实践

javascript - 使用 Javascript 更改图像转换

javascript - 使用淡入淡出动画时不显示 Bootstrap 模态对话框

javascript - 一个数字的所有数字的总和

javascript - Vue.js:使用 axios.get 之后的方法返回图像