2009-02-28 48 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

我同意其他答案不改變用戶輸入,你不能說出它可能是錯誤的,它可能是一個錯字,缺少小數,交換日/月/年字段等。撤消選項讓他們恢復到以前可能是一個很好的功能。

我認爲的主要內​​容是: - 在用戶通過示例或其他類似指示器輸入表單中的數據之前,明確有效的範圍和格式。 - 務必在下定義之前清楚指明必填字段。 - 限制用戶輸入有效數據的用戶控件 - 日期選擇器,旋轉控件,僅限數字的控件,在文本框上設置的最大長度等。 - 在驗證失敗時明確表單上的項目無效以及爲什麼它們是無效的,而不僅僅是一個簡單的「數據不正確」的全局消息,尤其是如果你有一個很長的表單,並且有許多字段可能有驗證問題。