确定是否有其他<选项>如果是默认选项,则“选择一个”.以空白值提交


Determining if other <option> was selected, or if default "Select one..." with blank value was submitted

我正在添加一个排序选项到我的搜索页面。我使用两个选择表单输入类型,一个用于要订购的字段,一个用于ASC/DESC。我有第一个选项的值="和文本"选择一个…"

<label for="sort[order_by_field]">Field</label><select name="sort[order_by_field]" id="combobox">
    <option value="">Select one...</option>
    <optgroup label="---">
        <option value="finding_incident_number"<?php echo ($field == 'finding_incident_number' ? ' selected="selected"': false); ?>>Incident #</option>
        <option value="finding_violation_type"<?php echo ($field == 'finding_violation_type' ? ' selected="selected"': false); ?>>Finding</option>
<label for="sort[order_by_direction]">Direction</label>
    <select name="sort[order_by_direction]">
    <option>Select one...</option>
    <option value="ASC"<?php echo ($dir == 'ASC' ? ' selected="selected"': false); ?>>Ascending</option>
    <option value="DESC"<?php echo ($dir == 'DESC' ? ' selected="selected"': false); ?>>Descending</option>
    </select>

提交表单后,我检查isset($_POST['sort'])。它是固定的。我也检查!空。它总是空的。我想知道用户是否做了选择。是否有一种方法来设置这个,这样我就不必检查单个数组值,即isset($_POST['sort']['order_by_field'])?我希望将来有一个动态数量的可添加/可移动的按字段排序。

我想我可以使用optiongrp标签,但那不会是语义标记,会吗?我想这是可行的。

从更广泛的角度来看,把"选择一个…"是一个很好的实践的形式下拉?

select字段将始终设置在$_POST

你应该检查

if ($_POST['sort_by']['field_name'] !='')

if ($_POST['sort_by']['field_name'] != null)

并且在使用变量之前检查它们总是一个好习惯。

加上"Select One…"是一个很好的做法,这没什么不好的