刷新后我无法选中正确的复选框。我已经查看了其他问题,但似乎没有人处理这个问题,其中复选框是从for循环生成的(至少我找不到任何东西)。
当我检查一些复选框时,3个随机复选框,刷新时我有3个复选框。然而,这些总是前3个,而不是我检查的确切的。
显然我的代码存在一些我应该解决的问题,但这也让我提出了另一个问题。通过循环生成元素是不好的做法吗?我认为它更好,因为它避免了或多或少重复的行
$numberOfLanguages = count($languageOptions);
for ($i = 0; $i < $numberOfLanguages; $i++) {
$check = '';
if (empty($_POST['language'][$i])) {
$check = '';
}
if (!empty($_POST['language'][$i])) {
$check = 'checked';
}
?>
<li><input type="checkbox" name="language[]" value=" <?php echo $languageOptions[$i] ?>" <?php if($check == 'checked'): ?>checked="checked"<?php endif; ?> /><?php echo $languageOptions[$i] ?></li>
<?php
}
答案 0 :(得分:1)
您还必须在输入标记的名称中包含行号,否则您将始终获得元素0,1和2.如:
<li><input type="checkbox" name="language[<?php echo $i; ?>]"...
从循环生成相似标记可以更容易地维护代码并发现错误;有时您必须这样做,因为内容来自数据库。所以不,这不是一种不好的做法。