<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Simply Accessible</title>
	
	<link>http://simplyaccessible.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Wed, 21 Dec 2011 13:47:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/SimplyAccessible" /><feedburner:info uri="simplyaccessible" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://simplyaccessible.com/?pushpress=hub" /><item>
		<title>Five Stages of Accessibility</title>
		<link>http://feedproxy.google.com/~r/SimplyAccessible/~3/0Iafxcom5yc/</link>
		<comments>http://simplyaccessible.com/article/five-stages-of-accessibility/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 15:02:31 +0000</pubDate>
		<dc:creator>Derek Featherstone</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[enterprise]]></category>
		<category><![CDATA[milieu]]></category>
		<category><![CDATA[organization]]></category>

		<guid isPermaLink="false">http://simplyaccessible.com/?p=637</guid>
		<description><![CDATA[Organizations grow over time. Their understanding of accessibility and their attitude towards it change too. Have you seen these five stages of accessibility where you work?]]></description>
			<content:encoded><![CDATA[<p>You may have heard of Elizabeth Kubler-Ross&#8217;s &#8220;<a href="http://en.wikipedia.org/wiki/K%C3%BCbler-Ross_model">Five Stages of Grief</a>&#8221; as taken from her book <cite>On Death and Dying</cite>.</p>
<p>If not, they are denial, anger, bargaining, depression and acceptance.</p>
<p>If the names of those phases aren&#8217;t a fit for what happens in the accessibility world, I don&#8217;t know what is. We all progress in our understanding of accessibility—both at a personal level and at higher level within our organizations (at least, we hope so!)</p>
<p>Have you seen these stages of Accessibility in your organization? How do you know which stage you&#8217;re at? Here&#8217;s some famous quotes we&#8217;ve heard over the years that might help you figure out where you are.</p>
<h2>Denial</h2>
<ul>
<li>&#8220;This is a web &#8216;<em>application</em>&#8216; so those rules don&#8217;t apply to us&#8221;
</li>
<li>&#8220;We&#8217;re not the government so we don&#8217;t have to make this accessible&#8221;
</li>
<li>&#8220;People with disabilities don&#8217;t come to my site… they just aren&#8217;t my customers&#8221;
</li>
</ul>
<h2>Anger</h2>
<ul>
<li>&#8220;I can&#8217;t believe they&#8217;re making us do this!&#8221;
</li>
<li>&#8220;Why don&#8217;t our team members know how to do this already!?!&#8221;
</li>
<li>&#8220;This is just going to cost us money that we&#8217;ll never make back!&#8221;
</li>
<li>&#8220;This is so unfair!&#8221;</li>
</ul>
<h2>Bargaining</h2>
<ul>
<li>&#8220;What about making it just level A compliant instead of AA?&#8221;
</li>
<li>&#8220;Can we just leave that part for later?&#8221;
</li>
<li>&#8220;I know we have three web sites, but can&#8217;t we just make one of them accessible?&#8221;
</li>
<li>&#8220;The mobile site doesn&#8217;t need to be accessible because our main site is.&#8221;
</li>
</ul>
<h2>Depression</h2>
<ul>
<li>&#8220;Sigh. We&#8217;ve done all this work, and its made no difference, and that consultant still told us we did it wrong…&#8221;
</li>
<li>&#8220;This is really hard, and there&#8217;s so much to think about&#8221;
</li>
<li>&#8220;What&#8217;s the point? No matter what we do it won&#8217;t be good enough&#8221;
</li>
</ul>
<h2>Acceptance</h2>
<ul>
<li>&#8220;Lets make things as accessible as we can, in a way that doesn&#8217;t compromise our business goals, or the aesthetic quality of our site. And, if we need to make changes later to make it more accessible, then we&#8217;ll do that too.&#8221;
</li>
<li>&#8220;We can do this!&#8221;
</li>
</ul>
<h2>Where are you?</h2>
<p>So, where are you? It would be great if we were all at the acceptance stage, but that might not be realistic. In which stage is your organization? Have any quotes you&#8217;ve heard over the years that you can share from inside your organization or from your clients? If so, please do share (anonymously, if you like!)</p>
<img src="http://feeds.feedburner.com/~r/SimplyAccessible/~4/0Iafxcom5yc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://simplyaccessible.com/article/five-stages-of-accessibility/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		<feedburner:origLink>http://simplyaccessible.com/article/five-stages-of-accessibility/</feedburner:origLink></item>
		<item>
		<title>Accessibility Testing: Correction Scenarios</title>
		<link>http://feedproxy.google.com/~r/SimplyAccessible/~3/h5NeiTbM0LA/</link>
		<comments>http://simplyaccessible.com/article/accessibility-testing-correction-scenarios/#comments</comments>
		<pubDate>Thu, 06 Oct 2011 12:00:06 +0000</pubDate>
		<dc:creator>Derek Featherstone</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://simplyaccessible.com/?p=594</guid>
		<description><![CDATA[Accessibility and user experience are not black and white. Here we take a look at some shades of grey, and user scenarios that we need to take into account when we're testing web sites and applications. We need to test for correct cases, incorrect cases, and moving efficiently from the incorrect state to the correct state. ]]></description>
			<content:encoded><![CDATA[<p>We often see code like this in web applications that we&#8217;re evaluating for accessibility and usability:</p>
<pre><code>onclick="this.value=''"</code></pre>
<p>OR </p>
<pre><code>onfocus="this.value=''"</code></pre>
<p>What does this code do when it&#8217;s used in a form field? Why is it there in the first place?</p>
<p>It is mostly used to clear out &#8220;default input&#8221; that is already in a form field.</p>
<p>Here is an example: Click or <kbd>Tab</kbd> to place the cursor in the field. Then type something into it. Then <kbd>Tab</kbd> away from the field to the Go button. Then <kbd>Shift+Tab</kbd> back to the field.</p>
<div class="callout">
<label for="telephone">Telephone number:</label><br />
<input id="telephone" type="text" value="555 555-5555" onfocus="this.value=''"/>
<input style="width: 3em" type="submit" value="Go" >
</div>
<h2>What&#8217;s wrong with this picture?</h2>
<p>Yes, I know. It is just bad code. You can get around this partially by improving the JavaScript. Something like:</p>
<pre><code>onclick="if (this.value==this.defaultValue) this.value=''"</code></pre>
<p>That way the JavaScript only clears the field if the <code>defaultValue</code> is in the field still. You could also use HTML5&#8242;s <a href="http://dev.w3.org/html5/spec/Overview.html#the-placeholder-attribute"><code>placeholder</code></a> attribute, with some fallbacks for those browsers that don&#8217;t support <code>@placeholder</code> yet.</p>
<p>And, yes, I know that if you&#8217;re reading this, you&#8217;d never use code that indiscriminately removes whatever input is in the field. But someone out there did and does, because we see it in apps we&#8217;re testing all the time.</p>
<h2>Why do we build things like this?</h2>
<p>I can&#8217;t say for certain that this is always the case, but I think part of the reason we see it often is because people consider only two cases when they&#8217;re coding, or unit testing or doing Quality Assurance testing on a web site or application. Or it was done in a hurry. Or it was copied and pasted in haste from a bad tutorial site somewhere and nobody caught it when testing. The problem here is that this code indiscriminately clears the data out of the field, even in cases when you don&#8217;t want it to. It assumes that if there is *any* data in the field at all, that it should be cleared out.</p>
<h2>How this relates to testing</h2>
<p>There are two basic cases most people would test for (in acceptance or Quality Assurance testing, for example). The correct case and incorrect case.</p>
<p><strong>The correct case:</strong> with a default value in the field, the user would place the focus in the field, the default would disappear and they&#8217;d enter some correct data in a field and submit the form.</p>
<p><strong>The incorrect case:</strong> with a default value in the field, the user would place the focus in the field, enter some incorrect data in the field and submit the form.</p>
<p>A QA tester would look at the results of the form submission and determine that the system responded appropriately or not. Tests complete. They might even test that the form has a label.</p>
<p>But user experience, and certainly accessibility, need to take into account many different scenarios. Not just a simple &#8220;the user entered information correctly&#8221; or &#8220;the user entered information incorrectly.&#8221; To understand the full impact of this code faux pas on user experience, we have to understand a bit more about how people with disabilities use the web, and we need to look not just at the &#8220;correct&#8221; or &#8220;incorrect&#8221; case, but the &#8220;correction&#8221; case where the user enters incorrect information, realizes they&#8217;ve made a mistake, or needs to check to see if they made a mistake before they submit the form. Here are a few scenarios:</p>
<h3>Typing Difficulties</h3>
<p>Javed enters a phone number with the correct number of digits, but mistypes. He needs to correct only the second last digit of the phone number as the rest of the digits are right.</p>
<p>A person that has difficulty typing—whether they&#8217;re using their hands, a mouth or head wand or some other device—might take a significant amount of time to enter a phone number into a field. How frustrated do you think Javed might feel when he encounters this type of script? Picture this: it takes Javed 30 seconds to type a phone number—something that you might type in less than 2 seconds. </p>
<p>And when he tabs or clicks into the field to fix that one digit, that JavaScript takes away all the digits that it took him 30 seconds to type. Now, he needs to start over.</p>
<h3>Voice Recognition Software</h3>
<p>Susanna&#8217;s browser auto-filled her phone number correctly but in the wrong field. It auto-filled her mobile phone number into the work phone field, and her work phone number into the mobile field. She needs to swap the numbers, even though both numbers meet the required pattern for phone numbers.</p>
<p>She tells her voice recognition software to focus on the phone number field for her mobile phone number and intends to tell her software to &#8220;select that&#8221; and &#8220;cut that&#8221; so she can move to the work phone number field and paste the phone number in there. And what happens when she uses the software to focus on the field? Her data disappears and she has to enter it again using her auto-fill which is may get it wrong again, or she has to dictate it—more work than she would have had to do with a simple cut and paste.</p>
<h3>Using a Screen Reader</h3>
<p>Latosha types her phone number into the field, but she doesn&#8217;t know if it is correct or incorrect until she double checks with her screen reader.</p>
<p>Think about Latosha. She types her phone number into the field, leaves the field to fill out more of the form, and then comes back to the phone number field to double check and suddenly her data is gone. Latosha can type quickly, but now she&#8217;s confused. A form field she thought she had filled in is now blank. What does that mean? Is there another phone number field to be filled in that she missed the first time around? Is this a different form on the same page? Is this even the same page?</p>
<h2>Transitional Cases</h2>
<p>Let&#8217;s be clear: every single one of these issues is a usability issue that would affect all of us. But, they are issues that have a much more significant impact on people with disabilities than they would on people without.</p>
<p>These are all &#8220;transitional cases&#8221; that need to be tested and accounted for in an application&#8217;s design. You can&#8217;t simply design or test for the correct case (&#8220;the user entered information in the right format&#8221;) and the incorrect (&#8220;the user entered incorrect data&#8221;) case and be done with it. You must test for the transition from the incorrect state to the correct state.</p>
<p>We&#8217;ve only described three cases where we don&#8217;t want to automatically clear out data that is in the field. There are countless others.</p>
<p>But you don&#8217;t need to count them. You just need to know that you almost never, ever want to use this line of code in your app:</p>
<pre><code>onfocus="this.value=''"</code></pre>
<p>And if you test for the ability to check your work, or make corrections with Javed, Susanna and Latosha in mind you&#8217;ll catch it.</p>
<h2>Next Actions</h2>
<ul>
<li>Examine your apps for code that removes data from fields. If you find it, it&#8217;s time to have that difficult conversation with your manager, or colleagues. You need to revisit this with them.
</li>
<li>The next time you&#8217;re wireframing, designing, creating user stories or test cases, use these descriptions above to make sure that you&#8217;re not creating something that is less usable than it should be.
</li>
<li>Make sure that when you&#8217;re testing your applications you&#8217;re not just testing to see if the application recognizes correct and incorrect input. Test to see how easy or difficult it is to move from the incorrect state to the correct state.
</li>
</ul>
<img src="http://feeds.feedburner.com/~r/SimplyAccessible/~4/h5NeiTbM0LA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://simplyaccessible.com/article/accessibility-testing-correction-scenarios/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://simplyaccessible.com/article/accessibility-testing-correction-scenarios/</feedburner:origLink></item>
		<item>
		<title>Aim for the Stars: Pragmatism and Transcripts</title>
		<link>http://feedproxy.google.com/~r/SimplyAccessible/~3/JjKhZZgHJQ0/</link>
		<comments>http://simplyaccessible.com/article/pragmatism-transcripts/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 17:54:59 +0000</pubDate>
		<dc:creator>Derek Featherstone</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[deaf]]></category>
		<category><![CDATA[hearing]]></category>
		<category><![CDATA[transcripts]]></category>

		<guid isPermaLink="false">http://simplyaccessible.com/?p=561</guid>
		<description><![CDATA[I was interviewed by Paul Boag for the Boagworld.com podcast that just went live (Season 2, episode 6, Aug 31, 2011). Paul asked me quite a few questions. In the resulting episode, he mentions that he felt a bit of pressure as I asked him some pretty blunt questions about his practice with providing audio transcripts for his podcast.]]></description>
			<content:encoded><![CDATA[<p>On June 22, 2011 I was fortunate to be interviewed by Paul Boag for Season 2 of the Boagworld podcast. I really must thank Paul for having me on the show and allowing me to talk with him. Yes, I did ask Paul to be on the show because I think its important that the Boagworld audience know as much as they can about accessibility. Actually, I believe that about all audiences.</p>
<p>We talked about several topics in the interview, but there is one that I simply must discuss a little further: Audio transcription. It was the topic of about the first 15 minutes or so of the interview. You can hear the podcast on the Boagworld site: <a href="http://boagworld.com/season/2/episode/s2e6/">Boagworld Podcast Season 2, episode 6</a>.</p>
<p>We&#8217;ve also provided a well-formatted and cleaned up version of the <a href="http://simplyaccessible.com/transcripts/boagworld-podcast-interview-with-derek-featherstone">transcript of the podcast</a> that tracks speaker names so that you can follow the conversation a bit better.</p>
<p>Let me highlight a few key components of my discussion with Paul regarding audio transcription.</p>
<h3>Format</h3>
<p>We often think of a text transcript of an audio file as an <em>alternative</em> format. Please remember that for someone that can&#8217;t hear, <strong>the text transcript is the primary format</strong>. We simply can&#8217;t forget that. People <em>rely</em> on the transcripts of our audio content as it&#8217;s the only way they can consume it.</p>
<h3>Who decides?</h3>
<p>In the interview Paul says that he normally posts an accompanying blog post that doesn&#8217;t include all the back and forth between he and Marcus, the other host of the podcast, and that the blog post is actually &#8220;better&#8221; than a transcript. In the interview, I suggested to Paul that the back and forth banter helps show what the relationship between Paul and Marcus is like. Someone that can&#8217;t hear, might be interested in that too. They also might not be. (You could actually argue that maybe nobody is interested in that and it should be edited out of the audio version, too, but the Boagworld audience has been split roughly 50-50 on whether or not the banter should be part of the podcast).</p>
<p>The question is, who gets to decide what&#8217;s important to the person that is reading instead of listening? That should be the user that decides. If you publish it for someone in audio format, publish the same thing in text format.</p>
<h3>Scheduling</h3>
<p>Paul suggests that if you record audio and wait to get it transcribed before you publish then it causes scheduling delays. There&#8217;s only a delay if you&#8217;re always running to catch up and things aren&#8217;t scheduled ahead of time. If you have a calendar, you can schedule release dates where the audio and transcript are released together. Schedule it ahead of time; it&#8217;s your <em>job</em>.</p>
<h3>Finally, Pragmatism</h3>
<p>Paul and Marcus mention a few times that you have to be pragmatic about accessibility. &#8220;How far do you go?&#8221; they ask. Paul says at one point in his discussion that &#8220;Derek was pushing me to do better than I was already doing.&#8221; Yes, yes I was. I&#8217;ll keep doing it, too, to anyone that I meet that is in this industry. To anyone that attends my conference talks and accessibility workshops.</p>
<p>How far do you go? &#8220;Pretty far&#8221; would be my response. We have to <em>aim for the stars</em> and set a very high standard.</p>
<p>While people may argue that pragmatism is about deciding what is &#8220;good enough&#8221; what they usually mean is that what they&#8217;ve done is &#8220;better than nothing.&#8221; There is a place for compromise. We do it all the time in our work. But it&#8217;s usually a compromise that means &#8220;less than optimal access&#8221; to the information that&#8217;s there, not &#8220;no access&#8221; at all.</p>
<p>Pragmatism includes planning. It includes budget. And it includes people with disabilities&#8230; as many as we can.</p>
<img src="http://feeds.feedburner.com/~r/SimplyAccessible/~4/JjKhZZgHJQ0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://simplyaccessible.com/article/pragmatism-transcripts/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://simplyaccessible.com/article/pragmatism-transcripts/</feedburner:origLink></item>
		<item>
		<title>Knowing when to break the rules</title>
		<link>http://feedproxy.google.com/~r/SimplyAccessible/~3/Jj9bOFBTCsk/</link>
		<comments>http://simplyaccessible.com/article/break-the-rules/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 19:52:11 +0000</pubDate>
		<dc:creator>Derek Featherstone</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[ARIA]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[rules]]></category>
		<category><![CDATA[validation]]></category>

		<guid isPermaLink="false">http://simplyaccessible.com/?p=504</guid>
		<description><![CDATA[We have lots of rules to follow in web design and development and we need to know which ones to break and when. Validation is one of the "rules" that I'm giving you permission to break, when you add ARIA to your applications.]]></description>
			<content:encoded><![CDATA[<p>I’m such a rebel (at least in <em>my</em> mind, I am)</p>
<p>I started teaching people about <a href="http://www.w3.org/TR/wai-aria/">ARIA</a> in 2006 at <a href="http://webdirections.org">Web Directions South</a> in Sydney Australia. I was delivering a full day workshop on building accessible web apps, and showed an example that essentially boiled down to this:</p>
<p><code>
<pre>
&lt;span x2:role="role:checkbox" aaa:checked="true"&gt;
	Include decorative fruit basket
&lt;/span&gt;
</pre>
<p></code></p>
<p>That’s a simplified version of a W3C example that used namespacing (that’s what the <code>x2:</code> and the <code>aaa:</code> are before the role and checked attributes). The syntax for ARIA has changed since then so that we no longer require namespacing. Today we’d end up with something a bit simpler like:</p>
<p><code>
<pre>
&lt;span role=”checkbox” aria-checked="true"&gt;
       Include decorative fruit basket
&lt;/span&gt;
</pre>
<p></code></p>
<p>I still use this example in my workshops today because it illustrates a number of great points—like, if you’re using <code>role=”checkbox”</code> instead of a native checkbox, you’d better have a really good reason.</p>
<p>From the very first time I used that example, I had people saying to me: “but that won’t validate.”</p>
<h2>What <em>about</em> validation?</h2>
<p>They were right, you know. We should all be writing valid code. I suggested to them that they could break the rules for validation anyway.</p>
<p>“We require our code to be valid” they said.</p>
<p>Fantastic! This is exactly where we should be aiming.</p>
<p>I’m not exaggerating when I tell you that I had this very conversation with someone just last month in a full-day training session. I told them flat out, break the rules.</p>
<p>We’re not talking about throwing out all the rules here. I’m specifically talking about <a href="http://www.w3.org/TR/wai-aria/">ARIA</a>. ARIA adds programmatic accessibility where it just didn’t exist before. It allows us to programmatically specify what an interface component is beyond the collection of markup and CSS that it is comprised of. We can say “This is a slider” or “this is a tree” or this is a set of tabs (even though each them might be just a collection of <code>&lt;div&gt;</code> and <code>&lt;span&gt;</code> elements). If you want more of a primer on ARIA, I wrote a brief primer in my article on <a href="http://www.alistapart.com/articles/aria-and-progressive-enhancement/">A List Apart: ARIA and Progressive Enhancement</a>.</p>
<p>Now then, you can add ARIA to HTML5 and you can even validate with some of the newer validation services. <a href="http://validator.nu">validator.nu</a> and even the <a href="http://validator.w3.org">w3c’s validator</a> have support for validation for HTML5 + ARIA (just remember, HTML5 and ARIA still aren’t completely specified and implemented yet, so there are quite likely some issues that may crop up when you’re validating).</p>
<p>But what if you’re not using HTML5 and your web app is HTML 4.01? or XHTML 1.0? Then what? </p>
<p>You can switch your DOCTYPE to HTML5 so that your app/documents are recognized as such, and would therefore allow ARIA’s role and other attributes to be valid.</p>
<p>Or—<em>and this is where I get a bit crazy</em>—you can just leave your DOCTYPE alone. Leave it as HTML 4.01. Leave it as XHTML 1.0.  Add ARIA anyway. Break the rules.</p>
<h2>Adding ARIA adds accessibility</h2>
<p>Because the potential good that you’re creating by adding in accessibility like this outweighs the problems that are created by not having valid code because you added ARIA. What problems are created by adding ARIA’s role and other attributes to HTML 4.01 or XHTML 1.0 documents? Precisely none. Why not?</p>
<p>If a browser doesn’t understand an element or an attribute, it just ignores it.</p>
<p>The browsers ignore role and other ARIA attributes. Assistive technology such as screen readers that run on top of those browsers, use the ARIA attributes for good, not evil. It doesn’t matter if they’re using it with HTML5, HTML 4.01 or XHTML 1.0.</p>
<p>Use ARIA with whatever version of (X)HTML you’re using. Even if it doesn’t validate.</p>
<p><strong><em>If breaking a rule like validation by adding ARIA means that your interface becomes more accessible then do it.</em></strong></p>
<p>Yep, I’m a rebel. </p>
<img src="http://feeds.feedburner.com/~r/SimplyAccessible/~4/Jj9bOFBTCsk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://simplyaccessible.com/article/break-the-rules/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://simplyaccessible.com/article/break-the-rules/</feedburner:origLink></item>
		<item>
		<title>Accessibility and HTML5 Block Links</title>
		<link>http://feedproxy.google.com/~r/SimplyAccessible/~3/50ZkXi1yGP4/</link>
		<comments>http://simplyaccessible.com/article/html5-block-links/#comments</comments>
		<pubDate>Thu, 16 Jun 2011 05:00:06 +0000</pubDate>
		<dc:creator>Derek Featherstone</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[block links]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[links]]></category>
		<category><![CDATA[validation]]></category>

		<guid isPermaLink="false">http://simplyaccessible.com/?p=453</guid>
		<description><![CDATA[HTML5 has many new elements and features. One of these is block links—we have the ability to wrap a link around block level elements. Here we take a look at the impact that this can have on accessibility.]]></description>
			<content:encoded><![CDATA[<p>In HTML5, it is valid and considered to be perfectly acceptable to create links that surround block level content. The only exception is that you can&#8217;t nest links. So how does this play out in browsers and assistive technologies that weren&#8217;t designed with this in mind? </p>
<p>Here’s an example from the page showing our <a href="http://furtherahead.com/tour-down-under-2011">upcoming tour of workshops to Australia</a>:</p>
<pre><code>&lt;a href=&quot;http://feathermelbourne.eventbrite.com/&quot;&gt;
&lt;h3 class=&quot;summary&quot;&gt;Melbourne&lt;/h3&gt;
	&lt;span&gt;&lt;em&gt;Supported by WIPA&lt;/em&gt;&lt;/span&gt;
	&lt;span&gt;July 25, 2011&lt;/span&gt;
	&lt;span class=&quot;button&quot;&gt;Purchase Tickets&lt;/span&gt;

	&lt;img src=&quot;star.png&quot; title=&quot;Melbourne&quot; alt=&quot;&quot; /&gt;
&lt;/a&gt;
</code></pre>
<p>The block link makes the entire block of content clickable without using multiple links. We just couldn’t do that in (X)HTML. Traditionally we would have made the heading clickable with a link inside the <code>&lt;h3&gt;</code> and then another link around the rest of the content to make it clickable, and then we might add JavaScript to deal with the clicks that happen in the spaces around and between the links and some CSS to create <code>:hover</code> to create the invitation to click anywhere on the block.</p>
<p>Block links are the perfect solution for this because:</p>
<ul>
<li>they don’t rely on or require any JavaScript</li>
<li>they create fewer “tab stops” on the page, making it easier for keyboard users to navigate</li>
<li>they automatically create a large, block clickable area, making it easier for everyone to click</li>
</ul>
<p>It is completely invalid (X)HTML though, isn’t it?</p>
<p>And because of the ways these types of validation/nesting errors are corrected in browsers, assistive technologies react to these in different ways.</p>
<h2>Testing, Testing, 1, 2, 3.</h2>
<p>Lets take a look at what actually happens when we put block links to the test with a couple of pieces of assistive technology.</p>
<p>With a screen reader, the behaviour depends on the mode you’re using to interact with the links (via tabbing through the interface, listening to a summary of the page, reading a links list, or listening to the entire page with “say all” mode).</p>
<p>With the Jaws screen reader, when navigating using the <kbd>tab</kbd> key, the only part of the block link that gets read is the first content in the link. In this case, the heading “Melbourne” or the other city names. When navigating using the arrow keys, though, the heading is identified as a link, as is the rest of the content that is contained in the block link, effectively creating two links. When using the links list dialog in Jaws, the block link is identified as one link.</p>
<p>With Voiceover on the Mac, the link text is repeated when it is read out when navigating using the tab key but is only seen as one link:</p>
<figure>
<img src="http://simplyaccessible.com/wordpress/wp-content/uploads/2011/06/blocklinksvoiceover-500-2.png" alt="Screenshot of block links with Voiceover on the Mac." aria-describedby="figcaption1" width="500" height="294" class="alignnone size-full wp-image-469" /></p>
<figcaption id="figcaption1">
<strong>Screenshot</strong>: We use block links on the promo page for our Down Under Tour. Using Voiceover the block link contents are repeated when the link is read out. Voiceover would read &#8220;link Canberra Supported by WIPA July 22, 2011 PURCHASE TICKETS Canberra Canberra Supported by WIPA July 22, 2011 PURCHASE TICKETS.&#8221; In other screen readers, parts of the link aren’t read at all.</figcaption>
</figure>
<p>To summarize, sometimes the link will be recognized as one link and other times as two, sometimes the content is repeated and sometimes portions of the content are not read out at all.</p>
<p><strong>The behaviour depends on the combination of screen reader, browser and navigation mode</strong>.</p>
<p>We don’t want it announced twice, though that is definitely better than the link contents not being announced at all.</p>
<p>We tested the same block links with Dragon Naturally Speaking (voice recognition software) and were pleased to find that it recognized each block link as just one link.</p>
<figure>
<img src="http://simplyaccessible.com/wordpress/wp-content/uploads/2011/06/blocklinksdragon-500.png" alt="Screenshot of block links with Dragon Naturally Speaking's link overlay." aria-describedby="figcaption2" width="500" height="338" class="alignnone size-full wp-image-460" /></p>
<figcaption id="figcaption2">
<strong>Screenshot</strong>: Block links on the promo page for our Down Under Tour. Using Dragon Naturally Speaking and the “link” command that shows all the links in a page for easy access, the block links are identified as just one single link. Here you can see the three green arrows numbered 5, 6, and 7 pointing to each of the block links for Melbourne, Perth and Sydney respectively.</figcaption>
</figure>
<h2>So, what are we to do?</h2>
<p>We decided to forge ahead with block links. Yes, the content gets read out twice in certain situations, but it is better to be read out twice than not at all.</p>
<p>In fact that was one of our biggest concerns: portions of the link not being read out. However, in this case, we’ve front loaded the most important part of the link (the name of the city) so it’ll be the first thing read out. And even though the date is not read out in certain scenarios, it is one of the very first pieces of content on the Event Brite registration pages. So, while it isn’t perfect, it is a compromise we’re willing to make. We may also look at changing the markup so that it is read out as part of that first block.</p>
<p>And remember: these issues will eventually go away as browsers and assistive technologies fully implement HTML5 compatibility. This isn&#8217;t even an issue that is &#8220;HTML5&#8242;s fault&#8221; so to speak. It&#8217;s just based on the way browsers recover from markup that they consider to be invalid.</p>
<p>For now, we’ll keep experimenting with block links and other HTML5 constructs in different scenarios and examine each situation on a case by case basis. This is only the tip of the iceberg when it comes to HTML5 and accessibility so we&#8217;ve got to keep moving forward with these solutions and dig deep into the accessibility implications and make smart decisions about what we implement and how we do it in the best possible way.</p>
<div class="callout">Like this? This is the type of content that we have in our full day workshop &#8220;<strong><a href="http://furtherahead.com/tour-down-under-2011">Real World Accessibility for HTML5, CSS3 and ARIA</a></strong>.&#8221; We&#8217;re taking this show on the road to Brisbane, Canberra, Melbourne, Perth (as part of the <strong>Edge of the Web</strong> conference) and Sydney from July 21 to Aug 2, 2011. <strong><a href="http://furtherahead.com/tour-down-under-2011">Sign up for the workshop</a></strong> now. Rates go up July 1st.</div>
<img src="http://feeds.feedburner.com/~r/SimplyAccessible/~4/50ZkXi1yGP4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://simplyaccessible.com/article/html5-block-links/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://simplyaccessible.com/article/html5-block-links/</feedburner:origLink></item>
		<item>
		<title>Keyboard Accessible YouTube Controls</title>
		<link>http://feedproxy.google.com/~r/SimplyAccessible/~3/7ayToI4mKWM/</link>
		<comments>http://simplyaccessible.com/article/keyboard-accessible-youtube-controls/#comments</comments>
		<pubDate>Tue, 17 May 2011 15:33:45 +0000</pubDate>
		<dc:creator>Derek Featherstone</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[keyboard]]></category>

		<guid isPermaLink="false">http://simplyaccessible.com/?p=418</guid>
		<description><![CDATA[Full keyboard functionality is a must-have for accessibility. Here's how we solve one of the problems with keyboard access for embedded YouTube videos.]]></description>
			<content:encoded><![CDATA[<p>Keyboard access is a must have for accessibility. Non-negotiable. If your site breaks basic keyboard functionality, you’re creating problems for several groups of people:</p>
<ul>
<li>Blind people that use a keyboard because they can’t use a mouse</p>
<li>People with low-vision that use a keyboard some of the time
<li>People with mobility or dexterity impairments that simply prevent them from using a mouse.
</ul>
<p>Generally, we’re talking about both sighted and non-sighted keyboard users.</p>
<p>It is now, and always has been, a fundamental for accessibility, period. It is one of the first things we check for when testing a site or application for accessibility and usability issues (Yes, I did say usability issues &#8212; proper keyboard accessibility makes it easier for everyone to use, disability or not.)</p>
<h2>Problems with content</h2>
<p>When working with straight up HTML based content, your keyboard accessibility issues are non-existent. With HTML, things like form fields, buttons and links just work, because keyboard accessibility is built in to the browser.</p>
<p>But start mixing content and you get&#8230; well, mixed results. Here we look at one example &#8212; YouTube videos embedded in a page.</p>
<p>As soon as you have mixed content embedded in a page, we encounter issues with what I refer to as “keyboard scope.”</p>
<p>As an example, open up FireFox and try to tab to the video controls on the page for our <a href="http://youtu.be/hMAIK9V6n3Y">screencast Images in Context</a>.</p>
<p>In order to control the movie with the keyboard, you need to click on the Flash movie to give it the focus first. Read that again. You need to use the mouse to click on the movie first in order to use the keyboard.</p>
<h2>How we “solve” the problem</h2>
<p>When we embed YouTube videos in our pages, we always include an external set of controls that control the key functions: play/pause and mute/unmute. These are added to the page with JavaScript (they only function with JavaScript on, so there is little point in having them on the page when JavaScript is off or unavailable) and utilize the YouTube API to control the movie.</p>
<figure>
<a href="http://simplyaccessible.com/wordpress/wp-content/uploads/2011/05/overlay.png"><img src="http://simplyaccessible.com/wordpress/wp-content/uploads/2011/05/overlay.png" alt="Overlaid YouTube Controls" title="Overlaid YouTube Controls" class="alignnone size-full wp-image-191" /></a></p>
<figcaption><strong>Screenshot:</strong> Keyboard accessible YouTube controls styled to overlay the video player.</figcaption>
</figure>
<p>We add two simple, natively accessible <code>&lt;button&gt;</code> elements to the page. Here’s the Play/Pause button:</p>
<p><code>
<pre>
$.fn.youtube_controller = function() {
    var player = $(this);

    var playButton = $('&lt;button /&gt;', {
        text: 'Pause',
        id: 'playBtn',
        click: function(e){
            e.preventDefault();
            var ytplayer = document.getElementById('video-player');
            if (ytplayer) {
                playerState = ytplayer.getPlayerState();
                if (playerState == 2 || playerState == -1) {
                    ytplayer.playVideo();
                    $(this).text = 'Pause';
                } else if (ytplayer.getPlayerState() == 1) {
                    ytplayer.pauseVideo();
                    $(this).text('Play');
                }
            }
        }
    });
    $(player).append(playButton);
</pre>
<p></code></p>
<p>Then we style them to make them appear just like the regular Flash YouTube controls. They’re positioned over top of the embedded YouTube movie so that the buttons are in exactly the same place as YouTube’s controls. We style them to look the same, including the :focus states, and then position them over the movie:</p>
<p><code>
<pre>
#watch-player button {
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
background: transparent;
position: absolute;
bottom: 6px;
text-indent: -9999em;
margin: 0;
padding: 0;
width: 30px;
height: 26px;
}

.main #watch-player button:focus {
    border: 3px solid yellow;
    outline: none;
}

#playBtn { left: 0; }

#muteBtn { left: 30px; }
</pre>
<p></code></p>
<p>Now, go use the keyboard to tab to the “Play/Pause” button on the <a href="http://simplyaccessible.com/article/images-in-context/">embedded version of Images in Context</a></p>
<p>See how it works? The controls are actually living outside the movie and that provides easy keyboard access to everyone.</p>
<h2>Not Perfect</h2>
<p>Now, this solution isn’t 100% perfect. Sometimes I think we should actually leave the buttons outside the movie and NOT style them to be positioned over top of the YouTube movie so that the buttons are more obviously available to everyone.</p>
<figure>
<a href="http://simplyaccessible.com/wordpress/wp-content/uploads/2011/05/external.png"><img src="http://simplyaccessible.com/wordpress/wp-content/uploads/2011/05/external.png" alt="Unstyled YouTube Controls" title="Unstyled YouTube Controls" class="alignnone size-full wp-image-191" /></a></p>
<figcaption><strong>Screenshot:</strong> Keyboard accessible YouTube controls below the video player in order to make the buttons more obvious.</figcaption>
</figure>
<p>I also feel that we need to include some of the other controls that are in the movie &#8212; a volume slider, a timeline scrubber, and a fullscreen control.</p>
<p>We could conditionally execute the JavaScript so that it doesn’t create duplicate controls where the tab focus issues have been resolved (IE9 and FireFox 4 both seem to have solved the tab focus problem; unfortunately we know how long it takes to get browsers upgraded in some environments.) Having a duplicate set of controls is certainly the lesser of two evils though &#8212; much better than not being able to control the movie with the keyboard at all.</p>
<img src="http://feeds.feedburner.com/~r/SimplyAccessible/~4/7ayToI4mKWM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://simplyaccessible.com/article/keyboard-accessible-youtube-controls/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<feedburner:origLink>http://simplyaccessible.com/article/keyboard-accessible-youtube-controls/</feedburner:origLink></item>
		<item>
		<title>Images in Context</title>
		<link>http://feedproxy.google.com/~r/SimplyAccessible/~3/svpZaTWjELM/</link>
		<comments>http://simplyaccessible.com/article/images-in-context/#comments</comments>
		<pubDate>Thu, 07 Apr 2011 14:09:30 +0000</pubDate>
		<dc:creator>Derek Featherstone</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[context]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[text alternative]]></category>

		<guid isPermaLink="false">http://simplyaccessible.com/?p=403</guid>
		<description><![CDATA[What is appropriate alternative text for an image? You can't really tell until you see the image in context. In our first screencast we look at how appropriate and accurate alt text can actually be counter to the objectives that we have when we look at that image in context.]]></description>
			<content:encoded><![CDATA[<div id="watch-player">
<div id="ytapiplayer">You need Flash player 8+ and JavaScript enabled to view this video.</div>
<p>	<script type="text/javascript">
		var params = { allowScriptAccess: "always" };
		var atts = { id: "video-player", wmode: 'transparent' };
		swfobject.embedSWF("http://www.youtube.com/e/hMAIK9V6n3Y?enablejsapi=1&#038;version=3&#038;playerapiid=ytplayer", "ytapiplayer", "580", "465", "8", null, null, params, atts);
	</script>
</div>
<ul>
<li><a href="/transcripts/images-in-context/">View the transcript for this video</a></li>
<li><a href="http://youtu.be/hMAIK9V6n3Y">View this video on YouTube</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/SimplyAccessible/~4/svpZaTWjELM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://simplyaccessible.com/article/images-in-context/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://simplyaccessible.com/article/images-in-context/</feedburner:origLink></item>
		<item>
		<title>Better for Accessibility</title>
		<link>http://feedproxy.google.com/~r/SimplyAccessible/~3/lw_Qu-OJz_4/</link>
		<comments>http://simplyaccessible.com/article/better-for-accessibility/#comments</comments>
		<pubDate>Fri, 21 Jan 2011 17:54:21 +0000</pubDate>
		<dc:creator>Derek Featherstone</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[assessment]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[keyboard]]></category>

		<guid isPermaLink="false">http://simplyaccessible.com/?p=345</guid>
		<description><![CDATA[You may have heard that display:none is bad for accessibility and that you should use off-left positioning instead. It isn't about using display: none; or off-left positioning. It isn't just about screen reader users. It's about making an interface work for everyone with efficient keyboard access for everyone that needs it—sighted or not.]]></description>
			<content:encoded><![CDATA[<p>Have you heard this before?</p>
<blockquote><p>If you use display:none, then screen readers don&#8217;t get that content. It is better for accessibility to use off-left positioning instead of <code>display:none</code></p></blockquote>
<p>The next thing you know, someone has it in their head that this is a binary situation: <code>display:none</code> is bad for accessibility and off-left positioning is good for accessibility.</p>
<p>Here&#8217;s the thing, though&#8211;sometimes you WANT to use <code>display:none</code>. Sometimes you want to use off-left positioning.</p>
<p>I actually saw an example recently that used off-left positioning and they said right in the comments:</p>
<pre><code>/* keep this off-screen because it is more accessible than display:none */</code></pre>
<p>Off-left positioning is a technique that is often used in image-replacement that allows you to essentially create a text alternative for CSS background images that are used in your designs. It has also been used for other things like hiding menus and other content off the screen&#8211;often in the name of accessibility.</p>
<p>The case I saw the other day was using off-left positioning for creating a CSS only hierarchical menu.</p>
<p>Here&#8217;s an example of how it was done:</p>
<figure>
<a href="http://simplyaccessible.com/examples/css-menu/"><img src="http://simplyaccessible.com/wordpress/wp-content/uploads/2011/01/css-dropdown-base2.png" alt="Example of errant use of off-left positioning in the name of accessibility." title="css-dropdown-base" class="alignnone size-full wp-image-350" /></a></p>
<figcaption><strong>Screenshot</strong>: Here&#8217;s an example of off-left positioning used in the name of accessibility because it is <q>more accessible than <code>display:none</code></q> even though the implementation is much less than accessible.</figcaption>
</figure>
<p><a href="http://simplyaccessible.com/examples/css-menu/">http://simplyaccessible.com/examples/css-menu/</a></p>
<p>There are 4 menu items that have sub-items that show when you use the mouse to hover over the items.</p>
<p>Now, start to tab through that page with your keyboard. What happens when you tab from the &#8220;About&#8221; link? Let me highlight this for you: </p>
<p><em>The keyboard focus is placed on the next link (&#8220;The Company&#8221;) that is still hidden from view because it is hidden using off-left positioning</em>.</p>
<p>The keyboard focus is now invisible to someone that is a sighted keyboard user (remember, screen reader users aren&#8217;t the only people that use a keyboard for navigation!). The focus disappears until &#8220;Services&#8221; gets the focus and then disappears again and again after each main navigational item as the off-left sub-menus have the focus.</p>
<h2>Fixing the problem</h2>
<p>There are several ways to solve the problem, each of which take into account two key considerations:</p>
<ol>
<li>Keyboard access to all content for everyone.
</li>
<li>Elements that aren&#8217;t visible on the screen shouldn&#8217;t (generally) be able to receive the focus.
</li>
</ol>
<p>Here are a few options that we&#8217;ve cooked up for you to look at. And please, while you&#8217;re looking at these examples, go through them with a keyboard (both forwards and backwards) to see the kind of keyboard access they provide compared to the original.</p>
<p><strong>Option 1</strong>: use <code>display:none</code> instead of off-left positioning and set the menu such that <code>:focus</code> doesn’t turn it to be <code>display:block</code>. This would require the &#8220;landing pages&#8221; for each of the top level menu items to have the equivalent sub menu items readily available on the page. <a href="http://simplyaccessible.com/examples/css-menu/option-1/">http://simplyaccessible.com/examples/css-menu/option-1</a></p>
<p><strong>Option 2</strong>: use <code>display:none</code> and have a <code>:focus</code> state to match <code>:hover</code> that makes it <code>display:block</code> and brings the sub menu items onto the page, allowing them to receive the focus, but only while they are on the screen. <a href="http://simplyaccessible.com/examples/css-menu/option-2/">http://simplyaccessible.com/examples/css-menu/option-2</a></p>
<p><strong>Option 3</strong>: use off-left positioning but use <code>:focus</code> to bring it back on the screen. Again, this would bring the sub menu items onto the page and allow them to receive focus, but only while they are on the screen.<a href="http://simplyaccessible.com/examples/css-menu/option-3/"> http://simplyaccessible.com/examples/css-menu/option-3</a></p>
<p><strong>Note</strong>: We aren&#8217;t going to include an ARIA example here. That&#8217;s for another article <img src='http://simplyaccessible.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>The Real Problem</h2>
<p>The problem isn&#8217;t so much that off-left positioning was used. The problem is that it wasn&#8217;t used appropriately combined with the faulty assumption that we need to <q>use off-left positioning because it is more accessible than display:none</q>. Someone came to understand through their own experimentation or hearing or reading that <code>display:none</code> isn&#8217;t good for accessibility and THEN implemented a solution without thoroughly testing for full keyboard access.</p>
<p>If you&#8217;re developing anything for the web make sure that you have efficient keyboard access to everything, and that you&#8217;re not allowing the focus to go off the screen to elements that are hidden off-left.</p>
<p>Now <strong><em>that</em></strong> would be better for accessibility.</p>
<img src="http://feeds.feedburner.com/~r/SimplyAccessible/~4/lw_Qu-OJz_4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://simplyaccessible.com/article/better-for-accessibility/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://simplyaccessible.com/article/better-for-accessibility/</feedburner:origLink></item>
		<item>
		<title>Will we ever get required fields right?</title>
		<link>http://feedproxy.google.com/~r/SimplyAccessible/~3/C8QZ-2W1pEE/</link>
		<comments>http://simplyaccessible.com/article/required-fields-right/#comments</comments>
		<pubDate>Wed, 01 Dec 2010 17:02:49 +0000</pubDate>
		<dc:creator>Derek Featherstone</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[ARIA]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[required]]></category>

		<guid isPermaLink="false">http://simplyaccessible.com/?p=289</guid>
		<description><![CDATA[I see forms all the time that make me wonder if we'll ever see people noting required fields in a form correctly. I bet you do too. Timing is everything, and yesterday—just as an article of ours was published at A List Apart called ARIA and Progressive Enhancement where we look at required fields in detail—I saw an example of a form that just makes me cringe. ]]></description>
			<content:encoded><![CDATA[<p>Web forms are everywhere&#8211;they drive interaction and e-commerce. They are the cornerstone of web applications and a critical component of accessibility for even the simplest of web sites. Why? Because if you get forms wrong from an accessibility or usability perspective, your app falls down in a hurry.</p>
<p>Even the simplest of things aren&#8217;t as straightforward as we&#8217;d like them to be.</p>
<p>Take a look at noting required fields for a form. You&#8217;ve likely seen hundreds of ways to tell a person that certain fields are required over the years. Just yesterday, I saw this example:</p>
<figure>
<img src="http://simplyaccessible.com/wordpress/wp-content/uploads/2010/12/billing-form1.png" alt="Screenshot of a billing form marking required fields with a thick red line to the left of the required fields."  class="aligncenter size-full wp-image-293" /></p>
<figcaption><strong>Screenshot:</strong> Here you can see that Address, City, State, Postal Code and Country are required fields. However, you can only &#8220;see&#8221; it as it is created with an empty <code>div</code> and a CSS background-color. </figcaption>
</figure>
<p>Here&#8217;s the code that is used to show that this is a required field:</p>
<pre><code>
&lt;div class="requiredField"&gt;&lt;/div&gt;

div.requiredField {
	background-color: #DC2222;
	width: 3px;
}</code></pre>
<p>There is nothing in the HTML &#8212; no information at all &#8212; that indicates required fields. It is all being done entirely with an empty, semantically meaningless <code>div</code> and some CSS properties. This means that it is a completely visual solution, and has nothing available for a screen reader or other assistive technology to read.</p>
<p>So what are you to do?</p>
<p>Simple.</p>
<p><strong>Content (HTML) is your most reliable way of showing people what fields are required.</strong></p>
<ul>
<li>It can be the word &#8220;required&#8221; in your form label.
</li>
<li>It could be an asterisk, or even an image of an asterisk.
</li>
<li>It could simply be a statement that &#8220;all fields are required&#8221; before the form.
</li>
</ul>
<p>In the future, that may change to include other techniques like adding HTML5&#8242;s &#8220;required&#8221; attribute or even ARIA&#8217;s &#8220;aria-required&#8221; attribute.</p>
<p>For now, it needs to be in your content, not your CSS.</p>
<h2>The Future</h2>
<p>We study form interaction a lot &#8212; it is usually tops on the list for our clients when we&#8217;re looking at their web apps. If you&#8217;re interested in a deep look at more modern methods, go read our article over at A List Apart:</p>
<p><a href="http://www.alistapart.com/articles/aria-and-progressive-enhancement/">ARIA and Progressive Enhancement</a></p>
<p>The meatiest part of the article is a detailed look at modern techniques for denoting required fields.</p>
<p>Take a look at the Going a bit deeper section. It may overwhelm you, but you&#8217;ll see the details of testing several different scenarios for noting required fields. We test methods for showing required fields like HTML5&#8242;s required attribute and ARIA&#8217;s &#8220;aria-required&#8221; attribute. At the end of the day, we always come back to our standard method of including appropriate content <a href="http://simplyaccessible.com/article/required-form-fields/">in the form label</a>. We started using that method in 2005 and have been using it ever since.</p>
<p>If you <strong>need</strong> to make your forms accessible, please take a look at our Virtual Seminar <a href="http://store.furtherahead.com/virtual-seminar/in-top-form/">In Top Form: Designing and Building Accessible Forms</a>. As a bonus, we&#8217;re giving everyone that registers a copy of Luke Wroblewski&#8217;s <strong>Web Form Design</strong> book (a $22 value). <strong><a href="http://store.furtherahead.com/virtual-seminar/in-top-form/">Sign up now</a></strong></p>
<img src="http://feeds.feedburner.com/~r/SimplyAccessible/~4/C8QZ-2W1pEE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://simplyaccessible.com/article/required-fields-right/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://simplyaccessible.com/article/required-fields-right/</feedburner:origLink></item>
		<item>
		<title>Hands-free for now</title>
		<link>http://feedproxy.google.com/~r/SimplyAccessible/~3/OOnSExxwJ5A/</link>
		<comments>http://simplyaccessible.com/article/hands-free-for-now/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 15:04:07 +0000</pubDate>
		<dc:creator>Derek Featherstone</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[assistive technology]]></category>
		<category><![CDATA[dragon dictate]]></category>
		<category><![CDATA[voice recognition]]></category>

		<guid isPermaLink="false">http://simplyaccessible.com/?p=281</guid>
		<description><![CDATA[My right hand is out of commission from doing too much yard work over the weekend. A sure sign I'm getting old, and a reminder that this can happen to anyone. I'm using Dragon Dictate for the Mac as a temporary solution. Hopefully it doesn't last too long.]]></description>
			<content:encoded><![CDATA[<p>It was an absolutely gorgeous weekend here in Eastern Ontario. The sun was shining, the leaves were drying up, and the grass was peeking through like it was coming out for some summer sun.</p>
<p>I managed to take advantage of the beautiful weather, blowing and vacuuming up the leaves and mulching them into a fine dust, and loading them all up into recyclable bags. 12 bags in all, 6 hours of work.</p>
<p>The next morning my right wrist was swollen up to be about the size of the roundness of a small apple. I&#8217;m having a really tough time flexing my hand, I can&#8217;t bend my wrist and holding onto anything is proving to be quite a challenge. When I do flex my hand I can hear a creaking noise that sounds like rubber tubing rubbing up against a ball of cellophane.</p>
<p>I can&#8217;t use my hand right now and it is slowing me down. I composed this entire blog post using Dragon dictate for the Mac. It&#8217;s quite accurate and I didn&#8217;t need to complete much training. Hopefully this won&#8217;t last long but I&#8217;m very thankful that I have been exposed to voice recognition software over the years in our accessibility work, so I know how to use it reasonably well. Even with that, the dictation part was the easiest. Actually posting proved to be a bit more challenging and is likely to become a series of posts on using Dragon Dictate on the Mac.</p>
<p>At some point in your life you may break down. You may get injured. Your abilities to do the things that you do now may decrease. Vision, hearing, dexterity, mobility, cognitive abilities &#8212; any or all of them may change in your future.</p>
<p>Right now you might be focusing on building accessible websites for other people. Someday you may be hoping that others are building them properly for you.</p>
<img src="http://feeds.feedburner.com/~r/SimplyAccessible/~4/OOnSExxwJ5A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://simplyaccessible.com/article/hands-free-for-now/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://simplyaccessible.com/article/hands-free-for-now/</feedburner:origLink></item>
		<item>
		<title>WCAG 2.0: Beyond Web Content</title>
		<link>http://feedproxy.google.com/~r/SimplyAccessible/~3/b2Am2fn9rHY/</link>
		<comments>http://simplyaccessible.com/article/wcag2-beyond-web-content/#comments</comments>
		<pubDate>Tue, 09 Nov 2010 18:20:21 +0000</pubDate>
		<dc:creator>Derek Featherstone</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[assessment]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[WCAG2]]></category>

		<guid isPermaLink="false">http://simplyaccessible.com/?p=266</guid>
		<description><![CDATA[Even though WCAG 2.0 isn't designed to be used beyond web content, its technology agnostic nature and foundation in user needs means that we can use it as a tool for assessing iPhone/iPad apps, desktop apps and more.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.w3.org/TR/WCAG20/">WCAG 2.0</a> was designed to be technology agnostic. Contrast WCAG 2.0 with WCAG 1.0 and you&#8217;ll see that version 1.0 specifically references HTML and nothing else. WCAG 2.0 takes a more modern approach, allowing you some freedom of choice in terms of technology. Think of it this way &#8212; if the technology has accessibility support, and you use it appropriately with that support, you can meet the requirements of WCAG 2.0.</p>
<p>This fits very well with the way that I&#8217;ve always tried to approach accessibility:</p>
<blockquote><p>I don&#8217;t care what technology you use, as long as you use the accessibility features of that technology properly.</p>
</blockquote>
<p>I know it isn&#8217;t quite that simple, and I generally advocate using HTML-based solutions over others, but in reality, at the end of the day, if you can support accessibility with what you build with Technology X, then do it.</p>
<p>I was very very happy to see that the W3C recently published an update to the <a href="http://www.w3.org/TR/WCAG20-TECHS/">Techniques for meeting WCAG 2.0</a> that included a huge number of <a href="http://www.w3.org/TR/WCAG20-TECHS/flash.html">Flash specific techniques for WCAG 2.0</a>. Even if I don&#8217;t always agree with the choice to use Flash, that isn&#8217;t my battle. My battle is making sure that if and when you do choose Flash, you implement accessibility. People are going to continue to use Flash and they need to have the tools and techniques to ensure they are creating accessible content.</p>
<h2>What about non-web content?</h2>
<p>I&#8217;ve seen and heard this a few times in the last while &#8212; someone will post a message to a mailing list asking &#8220;We&#8217;re building an application for iPad/iPhone. Is anyone else doing that with a focus on accessibility and if so, are you following WCAG 2.0?&#8221;</p>
<p>People inevitably point to <a href="http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/iPhoneAccessibility/Accessibility_on_iPhone/Accessibility_on_iPhone.html">Apple&#8217;s Accessibility Programming Guide for iOS</a> to provide guidance for making accessible iPhone apps. That is excellent advice &#8212; it is comprehensive and has a lot of valuable information. </p>
<p>Other responses flatly dismiss WCAG 2.0 for this scenario &#8212; &#8220;WCAG 2.0 is meant for web content only.&#8221;</p>
<p>My take? Just because something isn&#8217;t web content, per se, doesn&#8217;t mean that we can&#8217;t still take the core principles of WCAG 2.0 and apply it to an iPhone app. <strong>WCAG 2.0 is based on user needs</strong>. Your content and functionality, whether part of an app or delivered via browser, needs to be:</p>
<ul>
<li>Perceivable.
</li>
<li>Operable.
</li>
<li>Understandable.
</li>
<li>Robust.
</li>
</ul>
<p>Nothing precludes you from using WCAG 2.0 as a framework for assessing an iPhone app. Your app&#8217;s functionality and content needs to be perceivable, operable, understandable and robust, doesn&#8217;t it? </p>
<p>The implementation details are different than with HTML. Even so, we&#8217;ve used WCAG 2.0 as a framework for assessing iPhone apps, Flex/Flash applications, and even Java and other desktop apps as part of our <a href="http://furtherahead.com">accessibility consulting</a>.</p>
<p>Even if it isn&#8217;t &#8220;web content&#8221; per se, core user needs remain.</p>
<p>Have you used WCAG 2.0 as a framework for other types of content? I know all the guidelines don&#8217;t necessarily apply in a non-web context, but what other challenges did you run in to?  If so, we&#8217;d love to hear about it&#8230; please do share!</p>
<img src="http://feeds.feedburner.com/~r/SimplyAccessible/~4/b2Am2fn9rHY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://simplyaccessible.com/article/wcag2-beyond-web-content/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://simplyaccessible.com/article/wcag2-beyond-web-content/</feedburner:origLink></item>
		<item>
		<title>Custom Styles for iOS</title>
		<link>http://feedproxy.google.com/~r/SimplyAccessible/~3/ocJ22EHrt8I/</link>
		<comments>http://simplyaccessible.com/article/custom-styles-for-ios/#comments</comments>
		<pubDate>Fri, 01 Oct 2010 08:00:08 +0000</pubDate>
		<dc:creator>Derek Featherstone</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[user styles]]></category>

		<guid isPermaLink="false">http://simplyaccessible.com/?p=169</guid>
		<description><![CDATA[iOS allows the user to switch to a "high contrast" display—essentially reversing the colour scheme. This doesn't give the fine control of colours that a desktop operating system provides. With the use of a user style sheet and a slick bookmarklet, a user can apply a custom stylesheet to mobile Safari on their iPhone, iPad, or iPod Touch so that they can display the web site or application to suit their own styles.]]></description>
			<content:encoded><![CDATA[<p>I love user styles. Back in the days of WCAG 1.0, I wrote some user styles to make the WCAG Guidelines and Checklist more palatable (see my post: <a href="http://v1.boxofchocolates.ca/archives/2007/10/21/doing-it-with-user-style">Doing it with user style</a>).</p>
<p>I love user styles because they allow us, the users, to customize the way we want things to look. We can modify and override what the author suggests in their style sheets so that our preferences take priority over the author&#8217;s. My browser, my fonts, size, colours and layout.</p>
<p>Most browsers, including Internet Explorer, FireFox, Chrome, Opera, and Safari (see <a href="http://simplyaccessible.com/article/safari-5-user-styles/">Safari 5 User Styles</a>) all have mechanisms built into the browser that allow us to apply a user style sheet. This may be done at the browser level or through an extension mechanism, but ultimately this lets the end user control how a web page looks. This could be something simple like choosing a different background colour and text colour to be applied to every web site they view to something more complex where styles are reset and then set for every element possible in a web page.</p>
<p>The beauty of this mechanism is that it allows for much more customization of:</p>
<ul>
<li>font size</li>
<li>background and foreground colour combinations</li>
<li>displaying of hidden content</li>
<li>arrangement of elements on the page</li>
<li>size and colour of form controls</li>
</ul>
<p>The user style sheet gives you full control over how pages appear in your browser.</p>
<p>Unfortunately, we don&#8217;t have that ability on the iPhone or the iPad.</p>
<p>Actually, we do, but it isn&#8217;t as convenient as setting up a user style sheet.</p>
<p>Here&#8217;s an example:</p>
<ol>
<li>I borrowed my friend Wayne Dick&#8217;s user stylesheet and uploaded it to: <a href="http://examples.furtherahead.com/userstyles/waynedick.css">http://examples.furtherahead.com/userstyles/waynedick.css</a></li>
<li>I edited <a href="http://juicystudio.com/article/accessible-stylesheet-bookmarklet.php">Gez Lemon&#8217;s Accessible Style Sheet Bookmarklet</a> so that it includes that URL: <a href="javascript:(function(){if%20(!document.getElementById('someuniqueid')){var%20objHead%20=%20document.getElementsByTagName('head');%20if%20(objHead[0]){if%20(document.createElementNS%20&#038;&#038;%20objHead[0].tagName%20==%20'head')%20var%20objCSS%20=%20objHead[0].appendChild(document.createElementNS('http://www.w3.org/1999/xhtml',%20'link'));%20else%20var%20objCSS%20=%20objHead[0].appendChild(document.createElement('link'));%20objCSS.id%20=%20'someuniqueid';%20objCSS.rel%20=%20'stylesheet';%20objCSS.href%20=%20'http://examples.furtherahead.com/userstyles/waynedick.css';%20objCSS.type%20=%20'text/css';}}})()">Wayne&#8217;s Styles</a> (feel free to click it now if you like and you&#8217;ll see it in action)</li>
<li>bookmark it in Safari, and sync to iPhone or iPad.</li>
</ol>
<p>Launch that bookmarklet in mobile Safari and you should see something like this:</p>
<figure>
<img src="http://simplyaccessible.com/wordpress/wp-content/uploads/2010/10/simply-accessible-wayne-styles.png" alt="Screenshot of Simply Accessible customized with Wayne&#039;s styles" title="Screenshot of Simply Accessible customized with Wayne&#039;s styles" class="size-full wp-image-216" /></p>
<figcaption><strong>Screenshot:</strong> Here you can see Wayne&#8217;s styles customize the site to show a brownish background, large text, outlined headings, and links as <code>display: block</code> so that links in the middle of a paragraph are always easy to discern.</figcaption>
</figure>
<h2>Limitations</h2>
<p>Of course, there are limitations. Here&#8217;s what I see as the two most significant:</p>
<p><strong>Persistence.</strong> You need to apply this bookmarklet every time a page loads. That&#8217;s a limitation you could live with though if you need to be able to read the content with your preferred fonts, colours, sizes, and layout.</p>
<p><strong>Technical savviness.</strong> In order to employ this technique, you need to be able to author a user style sheet, upload to a server, edit the bookmarklet, save and sync the bookmarklet. Many end users that need this functionality may not have the chops to do this.</p>
<p>Here&#8217;s a helpful thought though &#8211; if you are reading this article, the odds are that you DO have the chops. If you know someone that could use some support with things like this, help them out. We&#8217;re all in this together, and all that.</p>
<img src="http://feeds.feedburner.com/~r/SimplyAccessible/~4/ocJ22EHrt8I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://simplyaccessible.com/article/custom-styles-for-ios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://simplyaccessible.com/article/custom-styles-for-ios/</feedburner:origLink></item>
		<item>
		<title>Safari 5 User Styles</title>
		<link>http://feedproxy.google.com/~r/SimplyAccessible/~3/oWCG8WvKdGQ/</link>
		<comments>http://simplyaccessible.com/article/safari-5-user-styles/#comments</comments>
		<pubDate>Tue, 28 Sep 2010 14:35:00 +0000</pubDate>
		<dc:creator>Derek Featherstone</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[user styles]]></category>

		<guid isPermaLink="false">http://simplyaccessible.com/?p=183</guid>
		<description><![CDATA[Safari 5 and other browsers like Opera, Internet Explorer, FireFox and Chrome allows users to set a user stylesheet preference. This enables a user to take control over their experience—styling the site the way they want it to be displayed, overriding the author styles.]]></description>
			<content:encoded><![CDATA[<p>Safari 5, like most other browsers, provides you with the option of specifying your own style sheets. I hadn&#8217;t noticed before, as I don&#8217;t use Safari often, but you can easily set a stylesheet in your preferences or choose from a list of previously applied user styles.</p>
<p>To add your own user style go to Preferences > Advanced > Style Sheet and select a CSS file (locally stored or on the network) to use that style sheet.</p>
<figure>
<a href="http://simplyaccessible.com/wordpress/wp-content/uploads/2010/06/safari5userstyle.png"><img src="http://simplyaccessible.com/wordpress/wp-content/uploads/2010/06/safari5userstyle.png" alt="Safari Preferences: Advanced Pane" title="Safari Preferences: Advanced Pane" class="alignnone size-full wp-image-191" /></a></p>
<figcaption><strong>Screenshot:</strong> Safari 5 Preferences Advanced dialog showing a drop down box for specifying a user style sheet.</figcaption>
</figure>
<p>If you&#8217;re unfamiliar with user styles, here is the scoop:</p>
<ul>
<li>You have specific text and background colour combinations that work best for you.</li>
<li>You have a particular font and font-size that work best for you.</li>
<li>You choose not to display images by default.</li>
<li>You decide that you want all your form fields to be twice as big as they are normally.</li>
<li>You want a certain outline around each paragraph so that you can more easily digest a page chunk by chunk.</li>
</ul>
<p>Whatever the reason, you create a set of styles that make things look the way you want them to. Through the browser itself, or through a browser extension, you tell the browser to use your new stylesheet, and it overrides what the author suggested.</p>
<p>Make sense? This use of technology is exactly why we use progressive enhancement and why we must always remember that other people may not see a web page the same way we do.</p>
<img src="http://feeds.feedburner.com/~r/SimplyAccessible/~4/oWCG8WvKdGQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://simplyaccessible.com/article/safari-5-user-styles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://simplyaccessible.com/article/safari-5-user-styles/</feedburner:origLink></item>
		<item>
		<title>Speed vs Accessibility</title>
		<link>http://feedproxy.google.com/~r/SimplyAccessible/~3/s3_eZOqZsB0/</link>
		<comments>http://simplyaccessible.com/article/speed-vs-accessibility/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 18:23:52 +0000</pubDate>
		<dc:creator>Derek Featherstone</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[balance]]></category>
		<category><![CDATA[optimization]]></category>

		<guid isPermaLink="false">http://simplyaccessible.com/?p=41</guid>
		<description><![CDATA[When it comes to crafting web sites, we often think of doing things that please search engines such as Google. This has the potential to lead us down a path where we think of Google first and users second. What happens when coding something for better optimization from Google's perspective clashes with coding something that is better for people with disabilities?]]></description>
			<content:encoded><![CDATA[<p>Earlier this year <a href="http://googlewebmastercentral.blogspot.com/2010/04/using-site-speed-in-web-search-ranking.html">Google announced speed is going to be included as a signal in their search algorithms</a>.</p>
<p>Right around that time I was in Phoenix for the 2010 IA Summit, and on Wednesday in my Real World Accessibility for Ajax and Web Apps workshop, an attendee asked about the issues of speed. At his company they&#8217;ve been focussed on speed of service delivery for their web site. To the point where they&#8217;ve changed the markup to be leaner. For a navigation menu, instead of using an ordered list, they were using simple links without any other markup.</p>
<pre><code>
&lt;ul&gt;
	&lt;li&gt;&lt;a href="page1.html"&gt;Page 1&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="page2.html"&gt;Page 2&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="page3.html"&gt;Page 3&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="page4.html"&gt;Page 4&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</code></pre>
<p>178 bytes</p>
<p>versus</p>
<pre><code>&lt;a href="page1.html"&gt;Page 1&lt;/a&gt; &lt;a href="page2.html"&gt;Page 2&lt;/a&gt; &lt;a href="page3.html"&gt;Page 3&lt;/a&gt; &lt;a href="page4.html"&gt;Page 4&lt;/a&gt;</code></pre>
<p>129 bytes</p>
<p>For that component alone, that&#8217;s roughly a 30% reduction in code. It is faster.</p>
<p>Add in style rules to make the list items display:inline, and include any DOM manipulation or traversal and these differences can add up.</p>
<p>I think most people would agree that the first example with the unordered list is more accessible, and provides more semantic markup. We&#8217;ve been coding navigation menus as lists of links for years and you likely have been too, for good reasons:</p>
<ul>
<li>a list of links provides more context (we&#8217;re on item 2 of 4)</li>
<li>coding it as a list allows a typical screen reader user to jump from one nav block to the next</li>
<li>we often use nested lists to denote hierarchy in our navigation (though this example doesn&#8217;t)</li>
</ul>
<p>So, where does this leave us, then?</p>
<p>It seems that at a micro level, speed and basic accessibility (and semantics) are at odds with one another.</p>
<p>I sincerely hope the weight given to site speed isn&#8217;t something that overpowers other factors like accessibility. Why? Because site speed is about to be the new big thing that companies focus on in order to try to get to the top of the search results. Thankfully they state: &#8220;While site speed is a new signal, it doesn&#8217;t carry as much weight as the <a href="http://www.youtube.com/watch?v=muSIzHurn4U">relevance of a page</a>&#8221;</p>
<p>Relevance will always be the most important factor (or at least, it better be). Accessibility and speed are important too, so to me, the best way to approach it will be:</p>
<ol>
<li>write/create hightly relevant content</li>
<li>use semantic markup and ensure your site is as accessible as it can be</li>
<li>use every means to speed up and optimize after you&#8217;ve done everything else.</li>
</ol>
<p>It doesn&#8217;t have to be speed <strong>versus</strong> accessibility, does it?</p>
<img src="http://feeds.feedburner.com/~r/SimplyAccessible/~4/s3_eZOqZsB0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://simplyaccessible.com/article/speed-vs-accessibility/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://simplyaccessible.com/article/speed-vs-accessibility/</feedburner:origLink></item>
		<item>
		<title>Form Error Messages</title>
		<link>http://feedproxy.google.com/~r/SimplyAccessible/~3/95Y-LEXA5is/</link>
		<comments>http://simplyaccessible.com/article/form-error-messages/#comments</comments>
		<pubDate>Sun, 16 Oct 2005 16:12:00 +0000</pubDate>
		<dc:creator>Derek Featherstone</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[errors]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[label]]></category>

		<guid isPermaLink="false">http://simplyaccessible.com/article/form-error-messages/</guid>
		<description><![CDATA[Use absolute positioning to visually place error messages after the form control they are associated with while keeping them as part of the form control’s label.]]></description>
			<content:encoded><![CDATA[<p>The techniques used in the Required Form Fields example to place the asterisk after the input control can easily be reused to apply to an equally important scenario: displaying error messages for a form.</p>
<p>In this case, the error message is emphasized within the label for the form field. Semantically this makes sense &#8211; we highlight error messages with colour, different text weight or other visual means in order to emphasize them anyway. Using a <code>&lt;label&gt;... &lt;em&gt;&lt;/em&gt;&lt;/label&gt;</code> not only provides us the elements for styling but also makes sense &#8211; the label (and therefore the error message) is specifically associated with the form field using the for attribute.</p>
<p><img src="http://simplyaccessible.com/wordpress/wp-content/uploads/2010/02/9.gif" alt="Screen shot of form field with label, showing the error message placed to the right of the text box." /></p>
<p>This technique is essentially an extension of the one used for denoting required fields. The exception is the HTML:</p>
<pre>
<code>&lt;div&gt;
&lt;label for="uname"&gt;Username
&lt;em&gt;must not contain spaces&lt;/em&gt;
&lt;/label&gt;
&lt;input id="uname" type="text" name="uname" value="" /&gt;
&lt;/div&gt;</code>
</pre>
<p>Placing the error message to the right of the field for easy scanning is useful, and the fact that it is still part of the label, and found before the text box in source order allows it to be read out by screen readers. This is a case where a zoom layout could also be used to provide a version to low vision users.</p>
<p>View the <a href="/examples/form-error-messages">Error Messages Example</a></p>
<img src="http://feeds.feedburner.com/~r/SimplyAccessible/~4/95Y-LEXA5is" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://simplyaccessible.com/article/form-error-messages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://simplyaccessible.com/article/form-error-messages/</feedburner:origLink></item>
		<item>
		<title>Required Form Fields</title>
		<link>http://feedproxy.google.com/~r/SimplyAccessible/~3/436faKntFwU/</link>
		<comments>http://simplyaccessible.com/article/required-form-fields/#comments</comments>
		<pubDate>Mon, 10 Oct 2005 17:17:00 +0000</pubDate>
		<dc:creator>Derek Featherstone</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[required]]></category>

		<guid isPermaLink="false">http://simplyaccessible.com/article/required-form-fields/</guid>
		<description><![CDATA[Use a separate fieldset for required fields, or denote them with an asterisk that is visually placed to the right of the input control using absolute positioning but is part of the label.]]></description>
			<content:encoded><![CDATA[<p>Over time a standard seems to have emerged for denoting required fields: changing the style of the label making it bold and/or red, and often including an asterisk beside the input text form control. Often times this asterisk is placed to the right of the input box, and consequently after the text box when examining the source order. </p>
<p>With the asterisk rendered after the field itself, it is not always read aloud by a screen reader, nor seen by a person with low vision using a magnifier. While it is also the user&#8217;s responsibility to understand what fields are and aren&#8217;t required, we, as developers and designers, certainly can make it easier for people to discover which fields are required.</p>
<p>A typical strategy is to change the form layout so that the label and its asterisk are listed above the form control itself, making it easier for screen reader users and low vision users to determine which ones are required. As a fully sighted user, I find this type of layout a bit more difficult to use, as I can&#8217;t scan quickly to determine the required fields &#8211; for me, the layout with the asterisk to the right of the form field is much more usable. So, how do we balance the needs of multiple groups?</p>
<p>Here are two possible strategies that are useful:</p>
<ol>
<li>Very simply, place all required fields in a &#8220;Required&#8221; fieldset and other information in an &#8220;Optional&#8221; fieldset. This has the benefit of semantically grouping the fields together, and that the legend is (generally speaking) read out before each of the fields depending on the verbosity settings of the screen reading software.  View <a href="/examples/required-fields-fieldsets/">fieldset example</a>.
</li>
<li>You could also use semantic XHTML to provide some emphasis to the asterisk and use CSS to place the asterisk part of the label visually after the input control. This relies on absolute positioning within a relatively positioned parent as shown in this illustration:
<p><img src="http://simplyaccessible.com/wordpress/wp-content/uploads/2010/02/4.gif" alt="Screen shot of form field with label, showing the asterisk placed to the right of the text box." /></p>
<p>Here is the relevant HTML for this example:</p>
<pre>
<code>&lt;div&gt;
   &lt;label for="uname"&gt;Username&lt;em&gt;*&lt;/em&gt;&lt;/label&gt;
   &lt;input id="uname" type="text" name="uname" value="" /&gt;
&lt;/div&gt;</code>
</pre>
<p>The CSS for this technique is fairly straightforward: first, the containing <code>&lt;div&gt;&lt;/div&gt;</code> is positioned relatively and given an appropriate width:</p>
<pre>
<code>form fieldset div {
  position: relative;
  width: 60em;
}</code>
</pre>
<p>Next, the label and input are styled:</p>
<pre>
<code>label {
  width: 15em;
}</code>
<code>input {
  width: 15em;
}</code>
</pre>
<p>Finally, we use CSS to place the <code>&lt;em&gt;*&lt;/em&gt;</code> to the right of the input:</p>
<pre>
<code>label em {
  position: absolute;
  left: 35em;
}</code>
</pre>
<p>This provides a benefit to sighted users, and those using screen readers. It doesn&#8217;t help low vision users in particular, but a zoom layout would be appropriate for use in this case.</p>
<p>View <a href="/examples/required-fields/">label example</a></li>
</ol>
<img src="http://feeds.feedburner.com/~r/SimplyAccessible/~4/436faKntFwU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://simplyaccessible.com/article/required-form-fields/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://simplyaccessible.com/article/required-form-fields/</feedburner:origLink></item>
		<item>
		<title>Search Form Layout</title>
		<link>http://feedproxy.google.com/~r/SimplyAccessible/~3/ehGt_MaxWNo/</link>
		<comments>http://simplyaccessible.com/article/search-form-layout/#comments</comments>
		<pubDate>Mon, 10 Oct 2005 15:58:00 +0000</pubDate>
		<dc:creator>Derek Featherstone</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[tab order]]></category>

		<guid isPermaLink="false">http://simplyaccessible.com/article/search-form-layout/</guid>
		<description><![CDATA[Use absolute positioning and a more logical source order to make forms with optional fields more usable to keyboard users and those using screen readers.]]></description>
			<content:encoded><![CDATA[<p>As we&#8217;ve seen in the first two examples, forms provide some interesting issues to users of assistive technology like screen readers, in particular as it relates to visual layout versus the linear source order. In this example we&#8217;ll take a look at a search form that includes some &#8220;optional&#8221; radio buttons for refining the search. A typical example might appear as illustrated as follows:</p>
<p><img src="http://simplyaccessible.com/wordpress/wp-content/uploads/2010/02/7.gif" alt="Screen shot of form field with label, search button to the right of the text field and optional radio buttons beneath." /></p>
<p>The HTML for this example might be:</p>
<pre><code>&lt;div&gt;
&lt;label for="searchtxt"&gt;
Search Terms:
&lt;/label&gt;
&lt;input id="searchtxt".../&gt;
&lt;input type="submit" value="Search" /&gt;
&lt;/div&gt;
&lt;div class="group"&gt;
&lt;div&gt;radio buttons&lt;/div&gt;
&lt;/div&gt;</code></pre>
<p>This is a fairly natural way to code the form when using a CSS based form layout &#8211; visually the first &#8220;row&#8221; of the form includes a label, a text box and a search button, and the second &#8220;row&#8221; includes the optional radio buttons that help refine the search.</p>
<p>View the <a id="srchex" href="/examples/search-form-layout/">Search Form Example</a></p>
<p>Based on what we know about source order, this presents a minor obstacle to a screen reader user as they will encounter the text field, then the search button, and then the radio buttons. They may not realize that the radio buttons exist &#8211; the natural tendency is to submit the form once the submit button is reached.</p>
<p>This form layout also causes a minor inconvenience to a keyboard user &#8211; to choose the optional radio buttons they must tab past the submit button, and then navigate backwards (often using Shift + Tab) to submit the form.</p>
<p>This problem can be solved by improving the source order and using CSS to absolutely position the Search button as follows:</p>
<p>First, we modify the HTML source:</p>
<pre><code>&lt;div&gt;
&lt;label for="searchtxt"&gt;
Search Terms:
&lt;/label&gt;
&lt;input id="searchtxt".../&gt;

&lt;div class="group"&gt;
&lt;div&gt;radio buttons&lt;/div&gt;
&lt;/div&gt;

&lt;input id="submitbtn" value="Search" /&gt;
&lt;/div&gt;</code></pre>
<p>Then we apply the following CSS to visually place the Search button at the top right of the form, much as in the previous examples:</p>
<pre><code>input#submitbtn {
position: absolute;
left: 31em;
}</code></pre>
<p>The result is that we have a form that visually shows the Search button beside the text box, but has a better source order for keyboard and screen reader users. It may also be useful to not position the Search button at all for a Zoom layout, allowing the Search button to fall vertically at the end of the form (while I have implemented the zoom layout in the example, note that it has not been tested with low vision users)</p>
<p>View the <a href="/examples/search-form-ordering">Search Form with source ordering Example</a></p>
<img src="http://feeds.feedburner.com/~r/SimplyAccessible/~4/ehGt_MaxWNo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://simplyaccessible.com/article/search-form-layout/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://simplyaccessible.com/article/search-form-layout/</feedburner:origLink></item>
		<item>
		<title>Search Results Page Layout</title>
		<link>http://feedproxy.google.com/~r/SimplyAccessible/~3/pjvhuBsk7A4/</link>
		<comments>http://simplyaccessible.com/article/search-results-page-layout/#comments</comments>
		<pubDate>Mon, 10 Oct 2005 15:58:00 +0000</pubDate>
		<dc:creator>Derek Featherstone</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[linearization]]></category>
		<category><![CDATA[search]]></category>

		<guid isPermaLink="false">http://simplyaccessible.com/article/search-results-page-layout/</guid>
		<description><![CDATA[Use absolute positioning and a more logical source order to make forms with optional fields more usable to keyboard users and those using screen readers.]]></description>
			<content:encoded><![CDATA[<p>When we use systems that include searching capability such as back end administration tools, we often see search forms presented both on the page that you search from and the page that displays the search results. This can be very useful for both the user and the programmer:</p>
<ul>
<li>the user doesn’t have to go “back” to search again or refine their search</li>
<li>the programmer gets to keep their code modularized and reuse the same bit of code over again by maintaining one page instead of two.</li>
</ul>
<p>However, this does cause some problems for visually impaired users, and (I’ll freely admit) sometimes throws me off for a number of reasons:</p>
<ul>
<li>the search form is presented first and, depending on its complexity, pushes the search results below the fold</li>
<li>there is often no indication that anything has changed – a screen reader user or screen magnifier user are presented with what looks like the same page. On several occasions I’ve been asked in user testing “didn’t I just fill that form out?”</li>
<li>a keyboard user is required to go through the entire page and search form before getting to the results.</li>
</ul>
<p>View a <a href="/examples/search-form/">typical search and results page</a>  that demonstrate these problems.</p>
<p>Fortunately there are a number of things that can be done to improve this functionality. </p>
<p>First, we can change the <code>action</code> of the form to include a fragment identifier/named anchor for the results page.</p>
<pre><code>
&lt;form method="post"action="whatever-page.php#results"&gt;
... form elements here …
&lt;/form&gt;
</code></pre>
<p>Next, we create that element within the results page, and use that element to do two things: 1) provide a statement about how many results were found, and 2) link that statement to another node within the page.</p>
<pre><code>Found <a id="results" href="#details">25 results for keyword</a></code></pre>
<p>This accomplishes two things:</p>
<ol>
<li>including the statement itself lets any user know right away that something has changed on the page</li>
<li>posting directly to that node places the focus where it is most relevant </li>
<li>linking the statement is very clear, and acts as a very precise link that “skips over the form” without actually being called a skip link.</li>
</ol>
<p>In my final example, I’ve also included a link after the search results that submits back to the form itself to make it easier to “Search again.”</p>
<p>View the <a href="/examples/search-form-final/">improved search and results page</a></p>
<h3>Other considerations</h3>
<p>You might also consider it useful to change the page’s <code>&lt;title&gt;...&lt;/title&gt;</code> to indicate that you are viewing the results page as well as the number of results found, or which ones you are displaying.</p>
<p>It may be useful when this is implemented within a template to actually submit to a named anchor or ID that is just above the desired target so that the target isn’t right at the very top of the viewport.</p>
<p>Providing some other visual cue to draw attention that particular node/link would likely provide benefit as well.</p>
<p>This technique could be applied to any form on a page that submits to itself.</p>
<img src="http://feeds.feedburner.com/~r/SimplyAccessible/~4/pjvhuBsk7A4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://simplyaccessible.com/article/search-results-page-layout/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://simplyaccessible.com/article/search-results-page-layout/</feedburner:origLink></item>
	</channel>
</rss><!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 7/13 queries in 0.008 seconds using disk: basic

Served from: simplyaccessible.com @ 2012-02-15 22:12:13 -->

