5

我们都知道警报是不好的。如果你不知道它读这个

警报用于与用户交流。那么,如果我们不使用它们,有什么好的选择呢?

在实现需要用户通信的东西时,我想得到一个很好的替代方案列表。

我自己举一个例子供大家使用:

案例:我们需要先验证用户输入,然后才能继续。

解决方案:当用户单击“确定”/“下一步”/“提交”时不显示警告框,而是在用户输入周围/旁边显示一个样式清晰的(例如白色背景上的红色)“框架”,该输入具有无效输入,并带有关于什么的信息文本是错的。为了让用户更容易,有问题的输入应该获得焦点,并在必要时移回视图。

4

8 回答 8

6

这是处理用户错误或警告的层次结构,适用于验证用户对字段的输入。

  1. 删除可能导致错误的元素。你真的需要用户的出生日期吗?您是否也可以使用其他不需要验证的东西,例如“18 岁以下”和“18 岁或以上”的选项按钮?

  2. 防止错误。一开始就不可能输入无效的输入。例如,使用下拉列表或“图片”字段,拒绝任何不可接受的字符(例如,电话号码的字母)。

  3. 接受输入并可能自动更正它并将结果回显给用户。从输入中做出一些东西。如果用户键入 4--14#008 作为日期,则自动将其更正为 2008 年 4 月 14 日。如果格式与版本号不匹配,请检查它是否是版本号并查找相应的版本号。如果它不符合您对有效地址的想法,那么,只需假设它是(可能是针对外国的)。用户的出生日期是否错误真的很重要吗?

  4. 提供撤消,而不是验证,清楚地显示用户所做的事情的含义,并提供一个明确的路径来扭转它。当用户输入要交易的股票数量时,在其旁边显示美元价值,以防用户将股票与美元混淆。保持字段可编辑,以便用户可以修复它。

  5. 在主窗口或网页本身提供警告和错误文本;文本应该是明显的,不会迷失方向,是非模态的,并且在纠正错误后会自动消失。输入无法识别的日期时,用红色下划线并在其旁边放置文字“无法识别的日期”,可能包括帮助链接以获取更多信息。

  6. 模态消息框。

于 2008-10-31T14:22:53.790 回答
3

许多警告框,以及所有让我烦恼的框,基本上都是在掩盖底层程序的缺点。

它通常归结为 iso 提供适当的撤消支持,“你确定吗?” 警报框被扔进去。

简而言之,让一切尽可能宽容(可撤销),您想添加的大多数警报框将不再需要。

于 2008-10-30T12:32:42.020 回答
1

我认为最重要的是用简单(外行可读)的语言提供有用的信息。“你想技术技术吗”没有帮助。

此外,使您的消息与应用程序其余部分的样式相匹配,并且看起来与阻碍用户工作效率的所有其他框不同。这违背了让您的应用程序看起来对用户来说很熟悉的通常规则,但是如果您希望他们阅读消息,它必须看起来不同。

如果您可以避免使用模式对话框,请这样做。这将使您需要使用的时间显得更加重要。

在适当的时候,始终将注意力集中在需要注意的项目上。例如,如果您正在进行某种字段验证,请将焦点放在有问题的字段上。

于 2008-10-30T12:40:22.160 回答
1

这个怎么样: Aza Raskin 的 独白框和透明消息

本文讨论“独白”框的消息以及它们的替代方案。

这很有趣。

这就是实现的样子。阅读文章了解更多信息。

替代文字

于 2008-11-20T07:44:51.987 回答
0

我非常喜欢 ASP.NET 的验证器控件最终结果(尽管它们实际上是个婊子)。以与您描述的方式类似的方式工作,在输入旁边放置一个星号,并在页面上显示可选消息或消息摘要,而不是当面提醒方式。

如果可能的话,我会一直将您的消息保留在页面/表单中。时间尺度可能另有规定。

于 2008-10-30T12:33:51.393 回答
0

状态栏消息和颜色/文本/项目闪烁更改以指示类似于@Rob 的 ASP.NET 示例的问题。多级撤消/重做系统是最好的。

于 2008-10-30T12:40:04.237 回答
0

我不是警报框的忠实拥护者,主要是因为它们确实会损害应用程序的可用性。正如 Alan Cooper 在About Face中所说的那样,这无异于在头部欺骗用户并称他/她为白痴。

另一方面,不良数据的通知是应用程序中的一项关键需求。首先,在我看来,您应该尽可能避免输入不良数据。大多数平台(ASP.NET、.NET WinForms、WPF、Java Swing、JSP 等)都有各种第三方控件工具包,它们将对此有所帮助。(虽然它在这些部分并不流行,但我实际上已经偏爱 Infragistics NetAdvantage。)

根据您的平台选择,您有许多 UI 通知可能性。已经提到了一些:使用应用程序的状态栏,指示字段本身的问题等。

我是一个 .NET 人,所以很明显我在这里的输入会受到环境的影响。

在网络上,我是验证控件的忠实粉丝。他们提供了很多通知,没有太侵入性的 UI。结合 的简单Text属性*、详细ErrorMessage属性和良好放置且视觉上明显ValidationSummary的 ,我得到了所有验证,几乎没有用户的噩梦。对于那些不在 .NET 上的控件,这些控件对输入的数据执行各种验证,并Text在页面上的任何位置(通常在被验证的控件旁边)显示它们的属性。该ErrorMessage属性位于其中ValidationSummary,通常位于页面顶部。

在 WinForms 环境中,我开始使用收件箱ErrorProvider控件和 Infragistics 的 Outlook 样式弹出框的组合。在我最近的 WinForms 应用程序中,我使用了两种不同的弹出窗口:一种是半透明的,出现在右下角。它有一个绿色的复选标记图标,用于通知用户成功消息。(我的用户不信任计算机;如果他们没有看到确认信息,他们会认为机器吃掉了他们的数据。长话短说。)这些框会在 7 秒内消失,或者用户可能会手动关闭它们。

第二种弹窗没有半透明,一个红色的X图标,出现在右上角。那是我显示验证错误的地方。此外,ErrorProvider控件会在验证失败的每个字段旁边显示一个图标,将鼠标悬停在给定控件上会显示其特定的错误消息。(这些特定消息也在弹出窗口中。)错误弹出窗口在 15 秒后消失。

我在该应用程序中使用的唯一模态警报框是当它崩溃时(真正未处理的异常;目前几乎不可能这样做)以及用户想要关闭脏窗口时。

这些是我用来避免警告框的一些技术。用户可以忽略确认消息(使他们的生活更轻松),并且不会因验证错误而受到模式的困扰——在这些错误被修复之前,他们无法保存他们的数据,但他们并没有被吓倒。当然,只要有可能,我会通过使用适当屏蔽的控件来防止验证错误,这些控件不允许无效输入。

于 2008-10-30T13:31:55.067 回答
0

Joel Spolsky提倡添加更多弹出框来告诉用户为什么他们不能执行某项操作,而不是首先禁用该操作(菜单、按钮、链接)。所以我想禁用用户不应该做的操作是摆脱大量弹出窗口的好方法。

于 2008-12-05T20:03:15.457 回答