我有2种颜色可供选择。
<select name="hoogte">
<? foreach ($hoogte_array as $hoogtekey => $valuehoogte) { ?>
<option value="<?echo $hoogtekey;?>" <? if ($hoogtekey == $_SESSION['laatstehoogte']){echo "selected";}?>><?echo $valuehoogte;?></option>
<?}
选择的值保持完美,这没什么问题。
提交后如何禁用其他选项?
有2种颜色。我选择一个,提交表格。值保持选中状态,其他选项被禁用。
谢谢。
答案 0 :(得分:2)
如果未选中,则将其置于“已选中”,然后禁用。另外,您必须先检查是否设置了会话。
<select name="hoogte"><?
foreach ($hoogte_array as $hoogtekey => $valuehoogte)
{
?><option value="<?= $hoogtekey;?>" <?php if(isset($_SESSION['laatstehoogte'])) { echo ($hoogtekey==$_SESSION['laatstehoogte']) ? "selected" : 'disabled'; } ?>><?= $valuehoogte;?></option><?
}
答案 1 :(得分:2)
首先
您的代码格式错误。
可以使用<?echo
代替<?=
。另外,也不建议使用短标签(用<?
代替<?php
),并且不应该使用它们。
第二
您可以使用简短版本而不是if else
,该版本在像您这样的情况下非常有用。
所以代替
if ($hoogtekey == $_SESSION['laatstehoogte']){echo "selected";}
你可以写
echo $hoogtekey == $_SESSION['laatstehoogte'] ? "selected" : "";
第三
如果您使用超全局变量,那么检查它是否存在以及null
是否不存在总是一件好事。有一个名为empty()
的函数。我建议使用它。它会检查变量是否不存在或等于null
,false
等。
最后
如果您要在选择后禁用其他选项,而不仅仅是为其添加disabled
属性。
这是一个例子
<select name="hoogte">
<?php foreach ($hoogte_array as $hoogtekey => $valuehoogte) { ?>
<option value="<?= $hoogtekey; ?>" <?= !empty($_SESSION['laatstehoogte']) && $hoogtekey == $_SESSION['laatstehoogte'] ? "selected" : "disabled"; ?>><?= $valuehoogte;?></option>
<?php }
</select>