【问题标题】:PHP if checkbox was checked and now wasn't (and opposite)?PHP如果复选框被选中并且现在没有(并且相反)?
【发布时间】:2011-04-08 22:46:06
【问题描述】:

我认为这是可行的?也许?

这是我的复选框输入:

<input  type='checkbox' name='cb_name' id='cb_name' checked='checked' />

我需要一个 if else 语句,仅检查复选框是否已更改。

我在表单上有其他输入字段。如果复选框未被触摸或选中,则保存表单而不执行复选框条件。

如果复选框之前被选中,现在是 != 'checked' 则执行此操作。

&&

如果复选框之前是 != 'checked' 而现在是 = 'checked' 则执行此操作。

&&

最后,如果复选框被单独留下(没有更改值),那么在不运行复选框条件语句的情况下执行其他表单内容??

【问题讨论】:

    标签: php checkbox if-statement


    【解决方案1】:

    不,您无法检查是否已检查。

    如果未选中复选框,则根本不会提交,因此如果要检查值,则必须以 isset($_POST['cb_name']) 之类的开头。

    【讨论】:

      【解决方案2】:

      为此,您必须有一些理由来决定何时显示该复选框是否选中该复选框。这是你的初始状态。

      因为我们不知道您是如何决定的,为什么不添加一个隐藏字段,其值是这样的,如果复选框被选中(即选中/未选中),则设置该值以匹配:

      <input type="hidden" name="cb_hidden" value="<?php print $checkedOrNot; ?>" />
      

      我们不知道您为什么选中复选框的条件,但是这应该抽象地解决这个简单的想法

      <?php
      $checkedOrNot = '';
      if(/* the condition that decides if things are checked */) {
          $checkedOrNot = 'checked';
      }
      ?><input type="checkbox" name="cb_name" checked="<?php print $checkedOrNot; ?>" />
      <input type="hidden" name="cb_hidden" value="<?php print $checkedOrNot; ?>" />
      

      然后当你得到你的帖子数据时

      <?php
      if(isset($_POST['cb_name']) && $_POST['cb_hidden'] != 'checked') {
          //if the checkbox was changed to checked
      } elseif(!isset($_POST['cb_name']) && $_POST['cb_hidden'] == 'checked') {
          //if the checkbox was changed to unchecked
      }
      

      这是一个不需要先前状态的解决方案

      【讨论】:

      • 我将如何定义 $checkedOrNot ? $checkedOrNot = "?";
      • 不管你决定是否选中复选框,我会编辑并添加一些代码来帮助
      • 太棒了!所以,如果我将 /* 决定是否检查的条件 */ 更改为 if($checkbox == "on") { ??
      • 确定吗?我不知道您选择设置复选框的方式或原因,所以我可以为您提供帮助。祝你好运。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-14
      • 2020-03-12
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      相关资源
      最近更新 更多