首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

8.3 可用性的提升

表单作为页面中最为常用的元素之一,提升它们可用性的结果只能是有益于用户。在这一部分中,我继续带领你探索两种常用的技术,它们常用来提高表单总体的可用性。

此外,你也有机会尝试使用JavaScript库来简化乏味无趣的DOM遍历和修改,提高可用性的操作也变得更容易。在这两种技术中我都选择使用jQuery JavaScript库(http://jquery.com),它特别擅长于DOM的遍历和修改。

8.3.1 悬停的说明

文本框:  
图8-3 在username和password
字段内使用悬停说明

我们要讨论的第一条提高可用性的技术是把说明定位(悬停)在相关的字段内,并在字段得到焦点后隐藏。这个技术的目的有两种。第一,它清晰地给用户传达这个特定的字段需要填写什么内容;第二,它有助于节省字段及其说明所占据的物理空间。

在原有的表单上,你要为username和password两个字段增加新的悬停说明,产生如图8-3所示的结果。

但实现这个具体效果的JavaScript代码相当复杂。为了达到无缝结合需要了解很多细节。让我们来看看实现最终效果所需的部分细节。

第一,为了把说明定位于输入元素的顶端,必须先把label和input元素都用一个div包裹起来。可以用这个div把说明绝对定位在字段的顶端上。

第二,必须让说明在字段得到或失去焦点时恰如其分地隐藏(或显示)。此外,当用户离开字段后,需要检查字段是否输入了值。如果是,就不必再把说明显示出来了。

第三,如果字段本身带有默认值的,要保证说明不要显示出来。否则,用户会看到混乱的文本。

记住了这些,让我们来看看实现表单内悬停说明效果的所需代码,如代码清单8-15所示。

代码清单8-15  使用jQuery JavaScript库实现字段中的悬停说明

// 获取所有在class为hover的label(说明)后的input元素

$("label.hover+input")

      // 为input元素包裹一个div(class为hover-wrap),

      // HTML大致如此:

      // <div class='hover-wrap'><input type="text" .../></div>

      .wrap("<div class='hover-wrap'></div>")

      // 当input元素得到焦点(无论是通过鼠标的点击还是通过键盘的敲击),隐藏label

      .focus(function(){

          $(this).prev().hide();

      })

      // 当用户离开input元素(并且没有输入文本)时,再次显示label

      .blur(function(){

          if ( !this.value ) $(this).prev().show()

      })

      // 遍历所有的input元素

      .each(function(){

          // 把label移动到<div class='hover-wrap'></div>内

          $(this).before( $(this).parent().prev() );

          // 如果表单带有默认值,确保label会自动隐藏

          if ( this.value ) $(this).prev().hide();

      });

但是这段独立的JavaScript还不足够实现具体的需求,你仍要增加CSS的样式化,以保证能把说明和字段放到恰当的位置上,如代码清单8-16所示。

代码清单8-16 CSS的样式化,以保证说明能够定位于相关的字段之上

div.hover-wrap {

      position: relative;

      display: inline;

}

div.hover-wrap input.invalid {

    border: 2px solid red;

}

div.hover-wrap ul.errors {

    display: none;

}

div.hover-wrap label.hover {

    position: absolute;

    top: -0.7em;

    left: 5px;

    color: #666;

}

不用太困难,你已经有效地改进了表单的可用性。使用这个技术,在节省屏幕空间的同时,你仍然能够给用户恰当的引导。这不失为一个双赢的方案。

文本框:  
图8-4 为表单的必填字段增加
上下文星号的结果

8.3.2 标记必填字段

第二条技术是使用视觉化的提示标记必填字段。比较普遍的做法是使用红色星号标记必填字段,大部分的Web开发者都在他们的网站上采用。但是,增加额外的内容以引进星号是相当不语义的,所以并不鼓励这样做。相反,这是一个使用JavaScript增加可视化提示的好机会。这个技术的一个例子如图8-4所示。

为必填字段加上提示还需要注意的一个方面是,需要增加特定的可以引导用户的帮助文本。你可以使用title特性为用户提供一条提示,正确解释红色星号的含义,因为某些用户并不熟悉*号的意义。好了,实现这个改进相当简单,如代码清单8-17所示。

代码清单8-17 使用jQuery JavaScript库为必填字段的label增加上下文*号和帮助信息

// 获取所有有必填记号的字段

$("input.required")

      // 然后定位到前一个label

      .prev("label")

      // 改变label的光标让它更有用

      .css("cursor", "help")

      // 当用户悬停到*号上,显示解释

      .title( errMsg.required )

      // 最后,在label后增加*, 表示这是必填的

      .append(" <span class='required'>*</span>");

为显示恰当的样式,你需要标红这个新提示,如代码清单8-18所示。

 

代码清单8-18 为*号增加样式

label span.required {

      color: red;

}

增加可视化提示和使用悬停说明的结合有效改进了可用性,而且是通过分离式的JavaScript实现的。在一些特定应用程序内,会找到很多表单和字段的改进例子,而它们只需要简单的JavaScript就能实现。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论