单选按钮使用 PHP 解决页面刷新时的默认检查状态

Posted

技术标签:

【中文标题】单选按钮使用 PHP 解决页面刷新时的默认检查状态【英文标题】:Radio button work around default checked status on page refresh with PHP 【发布时间】:2013-01-13 11:26:16 【问题描述】:

我有一种情况,有 5 个单选按钮,打开页面时默认选中一个。这些单选按钮代表 5 个类别。每个类别中有几个子类别提交按钮。子类别按钮被隐藏,除了当前在单选按钮处选择的类别中的按钮。

我希望用户能够使用单选按钮选择一个类别,然后从其中一个子类别中进行选择,但是在页面刷新时(来自 $_POST 请求),我希望保留“当前”类别的单选按钮检查。就目前而言,页面会随着子类别提交的提交而刷新,并且单选默认选中到第一个单选按钮类别。

我有 javascript 协调单选隐藏容器操作,因此表单标签必须看似覆盖所有五个单选按钮,并且所有五个单选按钮具有相同的名称,由于我的底层 javascript 无法更改。所以我不能简单地通过会话等更改每个收音机的名称和 php 中的代码。

实际上,我通过在您会发现已选中的单选标签中使用会话变量使类别保持在 $_POST 提交上,但我必须将每个单选和相应的子类别部分封装在其自己的表单标签中。这当然会导致 javascript 出现问题,并且单选按钮一旦按下,将无法再次按下。

有没有办法使用 php 解决这个问题?

任何帮助都会很好。提前致谢。

【问题讨论】:

相关:***.com/q/54546040/2943403 【参考方案1】:

我不得不用类来做这件事,有点麻烦。在页面加载时,将选中的项目值拉入变量(在本例中为 $val)。并为每个输入项内联:

<input type="radio" ... value="someval" <?php $x = ($val=='someval' ? 'checked="checked"' : ''); echo $x; ?> />

就像我说的那样,很麻烦,但它会检查正确的项目。唯一的问题是你的第一个项目需要更多的 if 逻辑,因为如果没有选择任何值,它将默认被检查。

<input type="radio" ... value="firstval" <?php $x = ((empty($val)) || ($val=='firstval')) ? 'checked="checked"' : ''; echo $x; ?> /> //removed extra bracket

你可以根据需要美化它,那只是为了内联。

【讨论】:

还没有工作...我有两个错别字,即。 1. $var/$val 和 2. 第二个单选按钮上的括号...我现在正在尝试解决...感谢您的帮助 有一个错字,但除此之外,这对我来说是完美的。谢谢 不需要声明一次性变量,只要有条件地回显checked即可。

以上是关于单选按钮使用 PHP 解决页面刷新时的默认检查状态的主要内容,如果未能解决你的问题,请参考以下文章

检查基于 php 变量的单选按钮

php表单中如何获取单选按钮与复选按钮的值

php表单中如何获取单选按钮与复选按钮的值

php表单中如何获取单选按钮与复选按钮的值

浏览器默认返回,页面刷新

jQuery Reset 选中后退按钮时的单选选项