【问题标题】:Why doesn't my config change when clicking a checkbox?为什么单击复选框时我的配置没有更改?
【发布时间】:2017-10-10 01:34:15
【问题描述】:

我试图让我的复选框在选中时将变量更改为 true,但每次单击它时,它只会刷新页面并将配置值保留为 false。

HTML 代码:

<input type="checkbox" name="music">

JQuery 代码:

<script>
        $( document ).ready(function() {
            var music = document.getElementsByName("music")
            $(music).click(function() {
                window.location.href = 'validate.php?music';
            })
        });
</script>

来自 validate.php 的代码:

if (isset($_POST["music"])) {
    $config -> SetVar("music_status", "true", "Music Status");
} else {
    $config -> SetVar("music_status", "false", "Music Status");
}

SetVar 函数确实有效,因为我将它用于其他事情,它只是不想与我的复选框一起工作。任何帮助和提示将不胜感激帮助我解决此问题。

【问题讨论】:

  • 使用 _GET 而不是 _POST,因为您的代码使用重定向而不是使用 action=post 提交表单。
  • 这使我可以将值更改为 true,但现在它保持为 true,不会更改为 false。
  • window.location.href = (window.location.href.indexOf('music') !=-1) ? 'validate.php' : 'validate.php?music';

标签: javascript php jquery checkbox


【解决方案1】:

你总是在设置 $_GET['music'] 但你没有将它设置为任何东西,也没有检查它的值。 将您的 javascript 更改为

    $( document ).ready(function() {
        var music = document.getElementsByName("music")[0].checked;
        $(music).click(function() {
            window.location.href = 'validate.php?music=' + music;
        })
    });

和你的php代码

if (isset($_GET["music"]) && $_GET['music'] == 'true') {

【讨论】:

  • 我不得不改变一些东西,但这在很大程度上有所帮助。谢谢!
猜你喜欢
  • 2022-01-24
  • 1970-01-01
  • 2011-06-19
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多