HTML下拉列表最佳实践

时间:2010-08-08 21:49:58

标签: php javascript html forms drop-down-menu

我正在整理一个相当简单的HTML / Javascript / PHP表单(我对所有这些都相当新)。表单的一个字段要求用户从合理长的列表中选择一个选项(使用下拉列表)。列表的内容极不可能改变。填充列表是否有“更好”的方式,而不仅仅是使用大量<option>标记:

<select name="longlist">
    <option value="one">One</option>
    <option value="two">Two</option>
    ....
    <option value="sixty">Sixty</option>
</select>

3 个答案:

答案 0 :(得分:6)

生成的HTML总是必须有选项标签,但您可以使用PHP或jQuery动态生成它。

例如

<强> PHP

<select>
<?php
$myArray=array("One","Two","Three", "Four", "Five");
while (list($key, $val) = each($myArray))
  {
  echo "<option>" . $val . "</option>"
  }
?> 
</select>

<强>的jQuery

<select id="array-test"></select>

var myArray= ["One","Two","Three","Four","Five"];

$.each(myArray, function(index, value) { 
  $("#array-test").append("<option>" + value + "</option");
});

答案 1 :(得分:1)

从可用性的角度来看,如果选项的数量确实很长,那么很难找到你真正想要的选项。

尝试找到一种方法将选项拆分为多个类别,并可能显示两个下拉列表:第一个选择类别,第二个只显示类别中的选项。您可以使用jQuery根据第一个选项中的选择为第二个下拉列表动态创建<option>

E.g

options = {
   "one": [1, 2, 3, 4],
   "two": [11, 12, 13, 14],
   "three": [21, 22, 23, 24]
}

$("select.select1").change(function() {
   var category = $(this).val() || $(this).text();
   if (options[category]) {
      $("select.select2").empty();
      for (var i in options[category]) {
         var newOption = $("<option>").text(options[category][i]);
         $("select.select2").append(newOption);
      }
   } else {
      $("select.select2").html("<option>Select a category first</option>");
   }
});

$("select.select1").change();

使用HTML:

<select class="select1">
   <option>one</option>
   <option>two</option>
   <option>three</option>
</select>
<select class="select2">
   <!-- I am dynamically generated -->
</select>

答案 2 :(得分:0)

如果您不需要以单词形式提供数字,例如1 vs. 'one',你可以省去为循环创建大量单词的麻烦。

<select>
<?php
    for ($i = 1; $i <= 60; $i++){
        echo "<option>" . $i . "</option>";
    }
?>
</select>