【问题标题】:Checkbox Php : Keep checked only the checked checkbox after submitting Get formCheckbox Php : 在提交 Get 表单后保持选中复选框
【发布时间】:2017-05-20 08:06:15
【问题描述】:

这是我的代码

<?php foreach ($categories as $cat) {  ?>
    <li>
    <input id="category" name="category[]"  type="checkbox" value="<?= $cat->term_id; ?>" 
    <?php if (isset($_GET['category'])) echo "checked='checked'"; ?>><?= $cat->name ?></input>
    </li>
<?php } ?>

但是当我提交表单时,所有复选框都被选中,我不想只选中我选中的复选框,而不是其他复选框 下面的例子

【问题讨论】:

    标签: php forms checkbox checked


    【解决方案1】:

    问题是因为这条线,

    <?php if (isset($_GET['category'])) echo "checked='checked'"; ?>> ...
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
    

    在表单提交时$_GET['category'] 将被设置,因此isset($_GET['category']) 条件将适用于所有复选框。这就是为什么无论您之前选中哪个复选框,都会选中所有复选框的原因。所以你的foreach 循环应该是这样的:

    <?php foreach ($categories as $cat) {  ?>
        <li>
        <input id="category" name="category[]"  type="checkbox" value="<?= $cat->term_id; ?>" 
        <?php if (isset($_GET['category']) && in_array($cat->term_id, $_GET['category'])) { echo "checked='checked'"; } ?>><?= $cat->name ?></input>
        </li>
    <?php } ?>
    

    【讨论】:

    • @Minimal 很高兴我能帮上忙。 ;-) 顺便说一句,你应该养成接受答案的习惯,否则问题会像open问题一样飘来飘去。此外,它还将鼓励其他开发人员进一步帮助您。请阅读,how to accept answer on Stack Overflow?
    【解决方案2】:

    请看一下这段代码,我认为它解决了你的问题。

    <input type="checkbox" name="small" class="checkbox" <?=(isset($_POST['small'])?' checked':'')?> /> Small
    <input type="checkbox" name="medium"  class="checkbox" <?=(isset($_POST['medium'])?' checked':'')?> >  Medium<br>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-10
      • 2015-01-22
      • 1970-01-01
      • 2017-08-30
      • 1970-01-01
      相关资源
      最近更新 更多