在我们的网络应用程序中,我们有一个搜索表单,其中包含一个字段,用户可以从一个可能的选项列表中选择一个或多个答案。我们目前使用" select"带有"多个"的html元素属性设置如下例所示:
=SumAfter(B1:H1,4)

select {
width: 150px;
}

来自用户测试的反馈表明此解决方案让用户感到困惑。通过按住Ctrl键(在窗口上)执行多个选择/取消选择,但是许多用户不知道这一点。
这个元素在使用键盘时似乎也不容易使用 - 这显然是一个可访问性问题。
是否有最佳实践"是一种向用户显示带有多个选项的输入的可访问方式?
答案 0 :(得分:6)
使用复选框代替。所有具有相同名称的复选框都是一个组(在本例中为names
)。
.row {
display:block;
}
<fieldset>
<legend>Select the Names</legend>
<div class="row">
<input type="checkbox" id="names_A" name="names[]" value="A" />
<label for="names_A">Alice</label>
</div>
<div class="row">
<input type="checkbox" id="names_B" name="names[]" value="B" />
<label for="names_B">Bob</label>
</div>
<div class="row">
<input type="checkbox" id="names_F" name="names[]" value="F" />
<label for="names_F">Fred</label>
</div>
<div class="row">
<input type="checkbox" id="names_K" name="names[]" value="K" />
<label for="names_K">Kevin</label>
</div>
<div class="row">
<input type="checkbox" id="names_M" name="names[]" value="M" />
<label for="names_M">Mary</label>
</div>
<div class="row">
<input type="checkbox" id="names_S" name="names[]" value="S" />
<label for="names_S">Susan</label>
</div>
</fieldset>
<强>解释强>
具有相同名称和以下括号([]
)的每个复选框都位于同一组中(在示例names[]
中)。如果您启用了一个或多个复选框,则会提交每个所选复选框的value
。您将获得包含$names = $_POST['names'];
的所有值的数组。如果您选择Alice
和Kevin
,则会获得包含以下内容的数组。
Array ( [0] => A [1] => K )
获取结果数组的代码(在帖子目标网站上):
<?php
$names = $_POST['names']);
print_r($names);
如果您未选中论坛names
的任何复选框,则$_POST['names']
未定义。
答案 1 :(得分:3)
复选框绝对是此处的首选选项,但不是您需要做的全部。
是的,您需要将标签与每个项目相关联,但如果您有一个整体标签,例如“您和谁是朋友?”你需要将它与整个复选框组相关联。这是通过fieldset
和legend
完成的。
<fieldset>
<legend>Who are you friends with?</legend>
<input type="checkbox" id="alice"><label for="alice">Alice</label><br/>
<input type="checkbox" id="bob"><label for="bob">Bob</label>
</fieldset>
答案 2 :(得分:0)