我目前有一个这样的表格:
<form action="#">
<select {if $isPostRequest}disabled="disabled" {/if}size="1" name="locale"
onchange="location.href={if $languageToggleNoUser}'{$currentUrl|escape}{if strstr($currentUrl, '?')}&{else}?{/if}setLocale='+this.options[this.selectedIndex].value{else}('{url|escape:"javascript" page="user" op="setLocale" path="NEW_LOCALE" source=$smarty.server.REQUEST_URI}'.replace('NEW_LOCALE', this.options[this.selectedIndex].value)){/if}" class="selectMenu">{html_options options=$languageToggleLocales selected=$currentLocale}</select>
</form>
它目前导致WCAG 2.0错误,为all forms need a submit button。
我想知道如何更改此代码以包含提交按钮。 onchange选项的代码非常复杂,我不明白。
感谢。
答案 0 :(得分:2)
答案 1 :(得分:0)
这里要注意的重要一点是,内容 并非的立即改变意味着 context 的改变。
从3.2.2 guideline的角度来看,您的选择框极有可能是完美的。
上下文的改变意味着真正的改变。当用户在选择框中选择一个选项时,焦点就会转移到页面的不同部分。另外,导致刷新整个页面或打开新标签页的操作也会使此条件失败。
WCAG "change of context" definition
网页内容的重大更改,如果在没有用户意识的情况下进行更改,则会使无法同时查看整个页面的用户感到迷惑
上下文变化包括:
- 用户代理;
- 视口;
- 重点;
- 改变网页含义的内容。
注意:内容的变化并不总是上下文的变化。内容的更改(例如,展开的轮廓,动态菜单或选项卡控件)不一定会更改上下文,除非它们也会更改以上内容之一(例如,焦点)。
示例:打开一个新窗口,将焦点移到另一个组件,转到新页面(包括看起来像用户已经移到新页面的所有内容)或重新安排页面内容是上下文更改的示例。
因此,如果您要做的只是在页面上的其他地方修改某些内容,而又不与用户的关注点交织在一起,那么从3.2.2准则的角度来看,您所做的一切都很好。
有一件事导致您的选择框无法访问。它缺少标签。这违反了准则2.4.6 Headings and Labels。缺少标签意味着用户将不知道选择框的用途。
<form action="#">
<label for="unique-id">Label for select box</label>
<select id="unique-id" {... all that other junk ...}>
{...<option> elements...}
</select>
</form>