【问题标题】:Disable option after submitting提交后禁用选项
【发布时间】:2018-11-28 09:23:39
【问题描述】:

我有 2 种颜色可供选择。

<select name="hoogte">
<? foreach ($hoogte_array as $hoogtekey => $valuehoogte) { ?>
    <option value="<?echo $hoogtekey;?>" <? if ($hoogtekey == $_SESSION['laatstehoogte']){echo "selected";}?>><?echo $valuehoogte;?></option>
<?}

该值保持完美选择,没有任何问题。

提交后如何禁用其他选项?

有 2 种颜色。我选择一个,提交表格。值保持选中状态,其他选项被禁用。

谢谢。

【问题讨论】:

  • 你可以尝试添加一个 else isset($_SESSION['laatstehoogte']) { echo "disabled"; } 似乎不好的用户体验来阻止人们选择其他选项 - 如果他们不小心选错了怎么办?
  • @Pete 不供公众使用,但谢谢!

标签: php html


【解决方案1】:

您将 else 放在“已选择”上,如果未选择则禁用。此外,您必须先检查是否设置了会话。

<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><?
    }

【讨论】:

    【解决方案2】:

    首先

    你的代码格式真的很糟糕。
    您可以使用&lt;?= 而不是&lt;?echo。也不建议使用短标签(&lt;? 而不是&lt;?php),您不应该使用它们。

    其次

    您可以使用短版代替if else,这在像您这样的情况下非常有用。
    所以不是

    if ($hoogtekey == $_SESSION['laatstehoogte']){echo "selected";}
    

    你可以写

    echo $hoogtekey == $_SESSION['laatstehoogte'] ? "selected" : "";
    

    第三

    如果您使用超全局变量,检查它是否存在以及是否不存在null 总是一件好事。有一个函数叫做empty()。我建议使用它。它会检查变量是否不存在或等于nullfalse 等。

    最后

    如果您想在选择后禁用其他选项,而不仅仅是向它们添加 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>
    

    【讨论】:

    • 谢谢!我是初学者,这真的很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 2021-10-08
    相关资源
    最近更新 更多