警报/确认/错误对话框的替代方案?

时间:2008-10-30 12:29:41

标签: user-interface user-experience

我们都知道警报很糟糕。如果您不知道,请阅读this

警报用于与用户通信。所以,如果我们不使用它们,那么什么是好的选择呢?

在实现需要用户通信的内容时,我想获得一个很好的替代选项列表。

我会以自己为例,每个人都可以使用:

案例我们需要在继续之前验证用户输入。

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

8 个答案:

答案 0 :(得分:6)

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

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

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

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

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

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

  6. 模态消息框。

答案 1 :(得分:3)

许多提示框和所有惹恼我的提示框基本上都掩盖了底层程序的缺点。

它通常归结为i.s.o.提供适当的撤消支持,“你确定吗?”投掷警报框。

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

答案 2 :(得分:1)

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

此外,使您的消息与应用程序其余部分的样式相匹配,并且与阻碍用户工作效率的其他每个盒子看起来不同。这与使用户看起来很熟悉的通常规则相反,但如果您希望他们阅读消息,则必须看起来不同。

如果可以避免使用模态对话框,请执行此操作。这将使你需要使用的时间看起来更重要。

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

答案 3 :(得分:1)

这是怎样的:Aza Raskin的 Monolog Boxes and Transparent Messages

本文讨论“monolog”框的消息,并替代它们。

非常有趣。

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

alt text

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

我不是警告框的忠实粉丝,主要是因为它们确实会损害应用程序的可用性。正如Alan Cooper在关于面孔中所说的那样,这无异于向用户说话并称他/她为白痴。

另一方面,错误数据的通知是应用程序中的关键需求。首先,在我看来,你应该尝试防止在人类可能的情况下输入不良数据。对于大多数平台(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控件在验证失败的每个字段旁边显示一个图标,将鼠标悬停在给定控件上会显示其特定的错误消息。 (这些特定消息也在弹出窗口中。)错误弹出窗口在十五秒后消失。

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

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

答案 7 :(得分:0)

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