javascript - 提交表单后如何保留切换复选框状态?
问题描述
我试图在提交后保留表单的复选框状态。这是您只能选中其中一个的复选框类型。我在这里看到了一个关于通过 PHP using 保留复选框状态的问题<?php if(isset($_GET['gender'])) echo "checked='checked'"; ?>
,但使用我的代码:
<form action="example.com/example" method="GET">
<input type="radio" value="male" name="gender" <?php if(isset($_GET['gender'])) echo "checked='checked'"; ?>>
<input type="radio" value="female" name="gender" <?php if(isset($_GET['gender'])) echo "checked='checked'"; ?>>
<input type="radio" value="other" name="gender" <?php if(isset($_GET['gender'])) echo "checked='checked'"; ?>>
<input type="submit" value="submit">
</form>
那行 php 将不起作用,因为它们都将被检查。有没有办法保留复选框的状态而不必使用类似的东西:
if(isset($_GET['gender']) && $_GET['gender'] == 'value')
因为我觉得这可以以更好的方式完成。
感谢您阅读我的问题。
解决方案
您描述的解决方案本质上正是您所需要的。如果这是你想要的,你可以让它更短一点:
<?php
$gender = $_GET['gender'] ?? false;
function checked(){ echo 'checked'; }
?>
<form action="example.com/example" method="GET">
<input type="radio" value="male" name="gender" <?php if($gender == 'male') checked(); ?>>
<input type="radio" value="female" name="gender" <?php if($gender == 'female') checked(); ?>>
<input type="radio" value="other" name="gender" <?php if($gender == 'other') checked(); ?>>
<input type="submit" value="submit">
</form>
此处使用的??
运算符是null coalescence operator
, 添加到PHP
since version 7.0
。如果未设置运算符的左侧部分,它的作用是返回运算符的右侧部分。
$gender = $_GET['gender'] ?? false;
与以下结果相同:
if(isset($_GET['gender']))
$gender = $_GET['gender'];
else
$gender = false;
尽管您的代码或我上面建议的代码在功能上都没有问题,但混合PHP
通常HTML
被视为不好的做法。我建议使用模板引擎 - 例如,Smarty
.
推荐阅读
- wordpress - WordPress Favicon 恶意软件
- websphere - 为什么我们在 WAS 中使用 .car 文件?
- javascript - 如何在不使用 setTimeout 的情况下挂钩正在进行的转换?
- swift - 我可以 pushViewController(UIViewController(), animated: true) ins side collection view cell
- terraform - Terraform 变量和计数 = 0
- voip - 如何生成不同IP系列的rtpengine ICE-candidates?
- reactjs - 无法将我的 React 应用程序正确部署到 GitHub
- javascript - 如何用正确的数据填充锚点
- mysql - 与端口 3337 上的 Ensembl VEP 脚本的连接失败
- javascript - 使用 JavaScript 匹配 HTML 表格列的宽度