【问题标题】:How to Keep an array and dynamic Checkbox stays checked after submit?提交后如何保持数组和动态复选框保持选中状态?
【发布时间】:2019-09-12 04:42:04
【问题描述】:

我有一个动态复选框(可以是 ++),需要在用户提交后保持选中状态。

我已经尝试了一些技巧,例如在 HTML 中的复选框代码之前使用隐藏输入。现在我坚持做 isset(_POST) 并且复选框没有保持选中状态。

这是我的 HTML:

<input type="hidden" name="hidden_name[]" id="hidden_name0">                                                                

<input type="checkbox" name ="name[]" id="name0">

<label for="name">Name</label>

--------更新-------- 在我的 PHP 文件中,代码如下:

$valueName = array();
        if(isset($_POST["hidden_name"]))
        {
                    foreach($_GET['hidden_name'] as $value)
                {
                    array_push($valueName,$value);
                }
        }

该代码不起作用:/

如何在用户检查并提交表单后使复选框保持选中状态?我应该用 PHP 写什么?我真的需要在复选框之前隐藏输入吗?

【问题讨论】:

  • 你能发布更多代码吗?需要知道 post 方法是如何工作的
  • 我已经更新了帖子:D
  • 您是否使用相应的复选框值更新隐藏字段值?
  • 您需要为您的复选框本身使用 isset 而不是使用隐藏输入。
  • 我已经做了一些研究,如果我使用隐藏的输入来覆盖复选框的值,它将起作用。但我的不行

标签: php zend-framework


【解决方案1】:

isset 可能返回 false,因为提交的值为 NULL。我建议在隐藏的输入字段上添加一个value='1'——或者您是否使用相应的复选框值更新该字段?

或者,您还有其他一些选择:

  1. 将每个动态复选框的 name 更改为具有标识符。

    <input type="checkbox" name="name-x" <?php echo isset( $_POST['name-x'] ) ? 'checked="checked"' : '' ?> />
    

    x 可能是您的动态 ID。注意添加了 PHP 代码并使用了三元运算符,如果设置了 $_POST['name-x'],您可以选中复选框。

  2. 为复选框添加一个值。

    <input type="checkbox" name="name[]" id="name0" value="name0" />
    <input type="checkbox" name="name[]" id="name1" value="name1" />
    <input type="checkbox" name="name[]" id="name2" value="name2" />
    

    但是,您需要在 PHP 代码中匹配此值。

    <?php
    if ( isset( $_POST['name'] ) ) {
        $values = array();
        foreach( $_POST['name'] as $value ) {
            array_push( $values, $value );
        }
    }
    ?>
    

    然后您必须再次修改您的复选框以使用内联 PHP。

    <input type="checkbox" name="name[]" id="name0" value="name0" <?php echo in_array( "name0", $values ) ? 'checked="checked"' : '' ?> />
    <input type="checkbox" name="name[]" id="name1" value="name1" <?php echo in_array( "name1", $values ) ? 'checked="checked"' : '' ?> />
    <input type="checkbox" name="name[]" id="name2" value="name2" <?php echo in_array( "name2", $values ) ? 'checked="checked"' : '' ?> />
    

您还可以创建一个函数来显示这些内联代码以使其更简洁。 HTH!

【讨论】:

    【解决方案2】:

    我假设您有一个包含一些复选框的表单,并尝试检查选中了哪个复选框。这是一个示例代码

    <form action="" method="post">
        <label for="name">Name 1</label>
        <input type="checkbox" name ="name[]" value="name1">
    
        <label for="name">Name 2</label>
        <input type="checkbox" name ="name[]" value="name2">
    
        <label for="name">Name 3</label>
        <input type="checkbox" name ="name[]" value="name3">
    
        <label for="name">Name 4</label>
        <input type="checkbox" name ="name[]" value="name4">
    
    
        <button type="submit" name="submit">Submit</button>
    </form>
    

    和php代码

    <?php
        if(isset($_POST["submit"])){
            $valueName = array();
            foreach($_POST['name'] as $value){
            array_push($valueName,$value);
            print_r($valueName);
        }
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-29
      • 1970-01-01
      • 2018-10-06
      • 2013-03-25
      • 2012-11-21
      相关资源
      最近更新 更多