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


Radio button work around default checked status on page refresh with PHP

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

我希望用户能够使用单选按钮选择一个类别,然后从其中一个子类别中进行选择,但在页面刷新时(从 $_POST 请求中),我希望"当前"类别的单选按钮保持选中状态。现在,页面会随着子类别提交而刷新,并且单选单选默认选中为第一个单选按钮类别。

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

我实际上通过在单选机标签中使用会话变量来获得类别以保持 _POST 美元的提交,您可以在其中找到检查,但我必须将每个收音机和相应的子类别部分封装在其自己的表单标签中。 这当然会导致 javascript 出现问题,单选按钮一旦按下,将无法再次按下。

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

我不得不在类中这样做,这有点麻烦。在页面加载时,将选中的项目值拉取到变量中(在本例中为 $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

您可以根据需要美化它,这只是用于内联。