【问题标题】:Keeping checkbox state after submit with status checked on first page load提交后保持复选框状态,并在第一页加载时检查状态
【发布时间】:2013-10-02 09:51:55
【问题描述】:

我有这个带有复选框的 html 表单,在提交表单并重新加载页面后,它们的状态保持选中或取消选中:

<form method="post" action="">
<input type="checkbox" name="keyword1" value="keyword1" <?php if(isset($_POST['keyword1'])) echo "checked='checked'"; ?> />keyword1
<input type="checkbox" name="keyword2" value="keyword2" <?php if(isset($_POST['keyword2'])) echo "checked='checked'"; ?> />keyword2
<input type="checkbox" name="keyword2" value="keyword3" <?php if(isset($_POST['keyword2'])) echo "checked='checked'"; ?> />keyword3
<input type="submit"  />
</form>

问题是,在第一页加载时,复选框未选中。是否有可能在开始时检查所有具有状态的复选框,然后在提交后保持其新状态?到目前为止,我无法弄清楚如何做到这一点。任何帮助将非常感激。谢谢,

【问题讨论】:

  • 如果您在输入按钮中添加名称和值,您可以检查它是否已经提交。
  • 有很多方法可以做到这一点,例如使用 cookie 或 javascript。
  • 那么使用 html/php 技术就没有更简单的方法了吗?

标签: php html forms checkbox


【解决方案1】:

您可以使用 $_SESSION 代替 $_POST :

<input type="checkbox" name="keyword1" value="keyword1" <?php if(isset($_SESSION['keyword1'])) echo "checked='checked'"; ?> />keyword1

然后把它放在文件的顶部:

session_start();
if (isset($_POST['my_form'])) {
    if (isset($_POST['keyword1'])) {
        $_SESSION['keyword1'] = 'checked';
    }
}

【讨论】:

  • 使用会话是正确的想法。只是不要让它正常工作。复选框始终保持选中状态。我需要在输入字段中使用一些 if..else.. 子句才能让它工作..?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-23
  • 2015-10-18
相关资源
最近更新 更多