我正在整理一个相当简单的HTML / Javascript / PHP表单(我对所有这些都相当新)。表单的一个字段要求用户从合理长的列表中选择一个选项(使用下拉列表)。列表的内容极不可能改变。填充列表是否有“更好”的方式,而不仅仅是使用大量<option>
标记:
<select name="longlist">
<option value="one">One</option>
<option value="two">Two</option>
....
<option value="sixty">Sixty</option>
</select>
答案 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>