因此在设置表单中的复选框设置时遇到问题 在php文件的顶部我有以下代码:
<?php
if (is_array("check_list") && in_array("1",$_POST["check_list"]))
{
$checked = "";
}
else
{
$checked = "checked";
}
if (is_array("check_list") && in_array("2",$_POST["check_list"]))
{
$checked = "";
}
else
{
$checked = "checked";
}
?>
在页面正文中有一个调用同一页面的表单,我有:
<input type="checkbox" name="check_list[]" value="1" <?php echo $checked; ?> style="margin-left:18px;"> Option 1 <input type="checkbox" name="check_list[]" value="2" <?php echo $checked; ?> style="margin-left:18px;"> Option 2
然后在页面下方并根据上面的选择:
<?php if (is_array("check_list") && in_array("1",$_POST["check_list"])){ ?>
<li data-link="option1"><a>Option 1</a></li>
<?php } ?>
<?php if (is_array("check_list") && in_array("2",$_POST["check_list"])){ ?>
<li data-link="Option2"><a>Option 2</a></li>
<?php } ?>
我想要实现的是复选框都被选为默认选项 页面首次加载时,如果随后取消选中则会记住 状态并在执行另一次搜索时显示为未选中。
以上是不同尝试使其正常工作的结果 - 已经搜索并已达到此但它很难看并且可能会写 在较少的线条中好多了。
任何帮助表示赞赏...
答案 0 :(得分:1)
检查!isset($_POST)
以确定表单是否已作为POST发送,如果不是则默认,否则检查$_POST['check_list']
数组中的值:
<?php if (!isset($_POST) || (is_array($_POST["check_list"]) && in_array(1, $_POST["check_list"]))){ ?>
<li data-link="option1"><a>Option 1</a></li>
<?php } ?>
// Assume these are $_POST, which is what you would use.
// Comment both out for default, no form posted.
// Uncomment one or both to try different combos.
//$post = array('check_list' => array(2,4));
//$post = array('check_list' => array(3,4,6,9));
for ($i = 0; $i < 10; $i++) {
$checked = '';
if (!isset($post)
|| (is_array($post['check_list'])
&& in_array($i, $post['check_list']))) {
$checked = " checked='true'";
}
echo "<input type='checkbox' name='$i' value='$i'$checked/> $i" . PHP_EOL;
}
注释掉(模拟默认,而不是发布表格):
<input type='checkbox' name='0' value='0' checked='true'/> 0
<input type='checkbox' name='1' value='1' checked='true'/> 1
<input type='checkbox' name='2' value='2' checked='true'/> 2
<input type='checkbox' name='3' value='3' checked='true'/> 3
<input type='checkbox' name='4' value='4' checked='true'/> 4
<input type='checkbox' name='5' value='5' checked='true'/> 5
<input type='checkbox' name='6' value='6' checked='true'/> 6
<input type='checkbox' name='7' value='7' checked='true'/> 7
<input type='checkbox' name='8' value='8' checked='true'/> 8
<input type='checkbox' name='9' value='9' checked='true'/> 9
首先$post
:
<input type='checkbox' name='0' value='0'/> 0
<input type='checkbox' name='1' value='1'/> 1
<input type='checkbox' name='2' value='2' checked='true'/> 2
<input type='checkbox' name='3' value='3'/> 3
<input type='checkbox' name='4' value='4' checked='true'/> 4
<input type='checkbox' name='5' value='5'/> 5
<input type='checkbox' name='6' value='6'/> 6
<input type='checkbox' name='7' value='7'/> 7
<input type='checkbox' name='8' value='8'/> 8
<input type='checkbox' name='9' value='9'/> 9
第二个$post
:
<input type='checkbox' name='0' value='0'/> 0
<input type='checkbox' name='1' value='1'/> 1
<input type='checkbox' name='2' value='2'/> 2
<input type='checkbox' name='3' value='3' checked='true'/> 3
<input type='checkbox' name='4' value='4' checked='true'/> 4
<input type='checkbox' name='5' value='5'/> 5
<input type='checkbox' name='6' value='6' checked='true'/> 6
<input type='checkbox' name='7' value='7'/> 7
<input type='checkbox' name='8' value='8'/> 8
<input type='checkbox' name='9' value='9' checked='true'/> 9
答案 1 :(得分:1)
你可能意味着
if (is_array($_POST["check_list"]) && in_array("1",$_POST["check_list"]))
您还使用一个变量$checked
尝试同时保留选项1和选项2的选中状态。尝试使用2个变量$checked1
和$checked2
。它现在的方式,无论你在查看选项1是否被选中时将$checked
设置为什么,都会被选项2覆盖。