验证应该如何表现

时间:2009-02-28 08:48:00

标签: user-interface language-agnostic validation

在非常常见的情况下,您有一个文本框,以及某种限制该文本框上有效条目的验证规则。失败的验证应该如何影响文本框的内容,尤其是在最初在无效之前输入有效值的情况下。

示例:想象一个表单,其中可以输入0到50之间的数字。用户输入40.一切都很好。但随后用户进入并将其更改为59。

显然恕我直言,应用程序应该尽快通知他他的错误。但是如何处理这些价值观呢?我认为应该有一种方法可以回到40作为一种有效状态的简单方法,但我不确定何时以及如何恢复它:焦点丢失了?只有按一个特殊键/按钮?

您怎么看?

编辑:我完全同意前两个答案:自动更改输入是一个坏主意。然而,我想保持“最后有效”值可用......也许一个干净的UnDo功能可以解决这个问题?

4 个答案:

答案 0 :(得分:13)

我采用这种方法进行现场验证非常简单:

您不应丢弃用户输入

如果用户输入的内容无效,请将其标记为 - 但不要更改该值。

你背后的理由很简单 - 一致性。

例如,考虑一对用于输入日期范围的字段,其中“有效”表示开始日期在结束日期之前。

现在,用户想要输入一个全新的范围。

如果您的系统立即丢弃无效条目,则会强制您的用户采取不同的行为。要输入较早的日期范围,必须先输入开始日期;要输入较晚的日期范围,必须先输入最终日期。不友好的。

相反,尊重用户输入 - 输入开始日期时,将其自由标记为无效,但保留值。然后,当输入最终日期时,两个字段现在都会验证。

这也是动态显示验证的动机(因为值已更改),但不限制用户在字段之间的移动。

答案 1 :(得分:2)

真的取决于你的功能规格,但是回到之前正确的值听起来像是一个很好的做法......对于阻塞错误而言总会阻塞。

但是你真的想阻止你的用户吗?如果选择选项b时有效范围为0-50,但选择选项c时有效范围为0-60,该怎么办?并且用户决定首先更改范围值?然后,用户会因失去她认为完全有效的价值而感到非常沮丧......

在自动恢复用户所做的更改时请记住这一点:)用户可能犯了一个错误,但也可能已经做出了改变,因为他将其与他心中的另一个改变联系起来但不能同时改变在申请中同时......

警告该值无效并让ctrl-Z取消用户放置的内容可能是更合理的默认值。

答案 2 :(得分:2)

@Bevan你是正义的。

如果你想看一个令人讨厌的例子,那就是破解Google Analytics

这种不友好的行为正是Google Analytics尝试比较日期时的行为,它让我疯狂

如果输入的开始日期早于开始日期,则会丢弃您的输入,从而迫使您按照规定的顺序输入信息。

这也意味着小错字可能意味着你被迫重新输入整个约会,这很糟糕。

答案 3 :(得分:1)

我同意其他答案,不改变用户输入,你不能告诉它可能是错的,也许这是一个错字,一个丢失的小数,交换日/月/年字段等。撤消选项允许他们恢复到以前可能是一个额外的好功能。

我认为的主要内​​容是: - 通过示例或其他类似指标,在用户输入表单中的数据之前明确有效范围和格式。 - 确保在提交之前明确指出必填字段。 - 限制用户输入有效数据的用户控件 - 日期选择器,旋转控件,仅数字控件,在文本框上设置的最大长度等。 - 在验证失败时明确表示表单上的哪些项目无效以及它们为何无效,而不仅仅是简单的“数据不正确”全局消息,特别是如果您有一个包含许多字段的长表单验证问题。