2009-02-28 50 views
1

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

示例:设想一个可以输入介于0和50之间的数字的表单。用户输入40.一切正常。但然后用户进去,并将其更改为59.

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

您认为如何?

编辑:我绝对同意前两个答案:自动更改输入是一个坏主意。然而,我想保持'最后有效'的价值可能......也许一个干净的UnDo功能将诀窍?

回答

13

,我采取这样的现场验证的方法很简单:

你不可丢弃用户输入

如果用户输入的条目是无效的,将其标记为这样的 - 但不要改变它的价值。

你背后的原因很简单 - 一致性。

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

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

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

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

这也是动态显示验证的动机(随着值的变化),但不限制字段之间的用户移动。

+0

是的,它真的很烦人,当应用程序改变你的价值。你提供了一个很好的例子。另一个:想象一下,当您按而不是时,autocompletes是否选择了第一个值。 – 2009-02-28 09:13:09

2

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

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

请记住,当自动恢复用户所做的更改:)用户可能犯了一个错误,但也可能有做出了改变意图,因为他把它与他的想法中的另一个变化联系起来,但不能同时在应用程序中同时改变...

警告该值无效并让ctrl-Z取消用户的东西放在那里可能会有一个更明智的默认。

2

@Bevan你是正直的。

如果你想看看它是如何讨厌,可以破解打开谷歌Analytics(分析)

这不友好的行为正是谷歌Analytics(分析)确实在尝试比较日期,一个例子,它使我疯狂

如果您输入的是开始日期之前的结束日期,它将放弃您的输入并因此强制您按照规定的顺序输入信息。

这也意味着,小错字可能意味着你被迫重新键入一个完整的日期,这只是吸收。

1

我同意其他答案不改变用户输入,你不能说出它可能是错误的,它可能是一个错字,缺少小数,交换日/月/年字段等。撤消选项让他们恢复到以前可能是一个很好的功能。

我认为的主要内​​容是: - 在用户通过示例或其他类似指示器输入表单中的数据之前,明确有效的范围和格式。 - 务必在下定义之前清楚指明必填字段。 - 限制用户输入有效数据的用户控件 - 日期选择器,旋转控件,仅限数字的控件,在文本框上设置的最大长度等。 - 在验证失败时明确表单上的项目无效以及为什么它们是无效的,而不仅仅是一个简单的“数据不正确”的全局消息,尤其是如果你有一个很长的表单,并且有许多字段可能有验证问题。