未选中复选框时发布复选框值[重复]
Posted
技术标签:
【中文标题】未选中复选框时发布复选框值[重复]【英文标题】:Post checkbox values when checkbox isn't checked [duplicate] 【发布时间】:2013-05-21 07:20:14 【问题描述】:如何将复选框 POST 关闭,例如,当它没有被选中时,因为复选框仅在它被选中并且我不想使用隐藏变量时才提交值
谢谢
【问题讨论】:
隐藏变量有什么问题? ***.com/questions/1809494/… 无论如何都发送了,我无法追踪哪个复选框是选中的,例如,如果没有选中任何框,我的复选框数组是 0=>off, 1=>off, 2=>off, 3 =>off 但是如果选中一个框,它将是 0=>off, 1=>on, 2=>off, 3=>off, 4=>off 我正在使用这些索引来初始化另一个变量.. if 0 act=create elseif (1) act=delete 等等..如果复选框未知,那么我将无法正确初始化我的变量..有什么想法吗? 这显然适用于服务器而不是客户端。你不应该依赖 javascript 告诉你的服务器哪些复选框没有被选中(通常浏览器不会告诉你)。由于您的服务器正在传递表单,因此您应该知道预期的响应是什么。 @DaveChen,这就是我想要做的。如果不使用隐藏变量并扩展我的复选框数组,我不知道如何知道是否未选中该框。如果您有任何想法,请告诉我。谢谢 我的回答是:不要使用隐藏值,您依赖客户端输入进行服务器操作。你需要知道你期望服务器端从什么开始。 【参考方案1】:简短的回答是浏览器不会发送未选中的复选框。但一种可能的解决方法是在 php 端设置一个默认数组
所以对于包含像
这样的字段的表单<input type='checkbox' name='checkbox[a]' value='1'/>
<input type='checkbox' name='checkbox[b]' value='1'/>
<input type='checkbox' name='checkbox[c]' value='1'/>
你会说
$checkbox_defaults = array(
"a" => 0,
"b" => 0,
"c" => 0
);
然后在 PHP 上说
$_POST["checkbox"] = array_merge($checkbox_defaults, $_POST["checkbox"]);
注意这仅适用于字符串索引数组...如果您需要使用数字索引数组,php 应该如下所示。
$checkbox_defaults = array(
0 => 0,
1 => 0,
2 => 0
);
foreach($checkbox_defaults as $k=>$v)
$_POST["checkbox"][$k] = (isset($_POST["checkbox"][$k])?
$_POST["checkbox"][$k]:$v);
【讨论】:
+1 NICE 解决方案;)
.
值得注意的是,这种技术不适用于非字符串键索引数组。数字索引数组,您将获得默认值 AND 选中的数组。
谢谢!但是我的数组是数字索引的,我不想返回两个值......我需要一种方法来只返回检查和未检查的值..有什么想法吗?
我会使用隐藏变量,但它的作用相同.. 发送检查值和隐藏值..
如果您对复选框的name
属性类似于name='checkbox[]
,那么您唯一可以真正依赖的就是不同的值。如果您在名称属性name='checkbox[1]
中放入数字索引,那么有一些希望......我会更新这个用例的答案。以上是关于未选中复选框时发布复选框值[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如果未选中复选框,如何提交 0,如果在 HTML 中选中复选框,如何提交 1 [重复]