从可用性的角度来看,如果选项的数量真的很长,很难找到您实际需要的选项。
试图找到一种方式来分割的选项分成类别,或许显示两个下拉菜单:第一个选择的类别,而第二只显示类别中的选项。您可以使用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>
编码是很好的。但是,我们应该始终记住**所需的**(接口和元素)部分,而不是修改提供**(接口和元素如何编码)的部分。 – 2010-08-09 06:41:47
@Knowledge Craving-我不知道我理解你,但我不建议该接口被更改为允许动态生成的选项,但它应该用于可用性方面的改进而改变。代码本身不那么重要,帮助网站的最终用户缩小到他/她想要的更快更重要。 – 2010-08-09 07:03:02
我同意你的最后一点。 – 2010-08-09 07:14:48