Forms 什么时候清理表格?

Forms 什么时候清理表格?,forms,user-interface,user-experience,Forms,User Interface,User Experience,“清理”是指格式化输入,如“a1b2c3”到“A1B 2C3”或“5551234567”到“(555)123-4567”。我认为我们没有多少选择: 当用户键入时。例如,当用户键入邮政编码时,所有字母立即大写,或者在用户键入电话号码的3位数字后,会在其周围加上括号 当字段失去焦点时。 从不。格式化只在服务器端进行,就在插入数据库之前。除非它显示在网站的某个地方,否则用户永远看不到它是如何格式化的。 (3b)如果存在表单错误,或在确认页面上。如果存在表单错误且表单需要重新显示,则会显示有效输入上的格

“清理”是指格式化输入,如“a1b2c3”到“A1B 2C3”或“5551234567”到“(555)123-4567”。我认为我们没有多少选择:

  • 当用户键入时。例如,当用户键入邮政编码时,所有字母立即大写,或者在用户键入电话号码的3位数字后,会在其周围加上括号
  • 当字段失去焦点时。
  • 从不。格式化只在服务器端进行,就在插入数据库之前。除非它显示在网站的某个地方,否则用户永远看不到它是如何格式化的。
    (3b)如果存在表单错误,或在确认页面上。如果存在表单错误且表单需要重新显示,则会显示有效输入上的格式,或者如果您有确认页面(这些输入正确吗?),则会显示在确认页面上
  • 永远不要。数据应按原样转储到数据库中,并且仅在模板/视图中格式化,然后再显示给用户

  • 你觉得怎么样?我想我喜欢(2)。提醒我Visual Studio中的代码格式工作原理(在关闭大括号或键入分号时发生)。

    根据输入的类型,我选择(1)或(2)。(1) 如果操作正确,可能是最方便用户的,但是实现起来更为复杂(例如,如果我从连字符的电话号码中删除一个数字,或者连字符?)。如果你能负担得起,就选择(1),否则就选择(2)。

    我采用与验证相同的方法。一次在客户端,一次在服务器端。无论是在焦点不集中的情况下还是在他们键入时,这都无关紧要。

    我喜欢在字段失去焦点后过滤字段(当字段在转到下一个字段之前正确格式化非常重要时,这是很少见的),或者在用户点击“提交”按钮时,我过滤字段内容(或您想叫它什么)将数据发送到服务器

    这对我有几个好处:

  • 用户的输入不会被恼人的“自动更正”打断——如果做得不好,自动更正有时会让人感觉像恶魔般的占有

  • 用户真的不关心,也不需要知道你不想在你的电话号码字段中使用(,)或-,所以请安静地为他们取出。不需要任何注释或说明

  • 此外,我总是过滤字段值,以防止任何类型的代码注入攻击(如果您知道自己在做什么,那么很容易实施这种攻击)。我已经了解到,由于作者没有从提交的数据中删除潜在的SQL标记,整个数据库都被破坏了……这让我不寒而栗

  • 它还允许我检查所有输入错误(如果有),或未填写的必填字段,并在同一时间向用户报告一组问题……我去过的网站在填写表单时给你发送了如此多的消息,感觉有点像有一个唠叨的亲戚在你身后

  • 例如,当用户键入邮政编码时,所有字母都立即大写,或者在用户键入电话号码的3位数字后,在其周围加上括号

    这种类型的输入非常适用于输入软件或游戏的序列码或CD键。我注意到很多人对代码是否区分大小写或是否也应该输入破折号感到困惑

    如果你有一部iPhone,你会注意到当你输入一个电话号码时,它也会自动用括号和空格进行格式化。但这往往会让人困惑,因为部分键入的号码并不总是正确地“分组”


    回答:这完全取决于上下文。

    这实际上取决于它是什么类型的数据,它代表什么,以及它将用于什么,不是吗?不需要讨论这些类型的问题。格式化只需要在客户提出这一问题时才需要。格式化也因国家、您正在格式化的内容、邮政编码、电话、高度或w而有所不同八:)。需要客户端格式。否则用户将输入任何内容,服务器无法正确处理。在那里再添加一个选项5。当你的老板(客户)要求格式化时进行格式化。:)@zod:“否则用户将输入任何内容”——这称为验证;这是另一个问题。(5) 仅当您的唯一目标是领取工资支票时适用;我们中的一些人对自己的工作感到自豪。@Pekka:怎么会这样?如果是标准格式的数据,我认为应该强制转换成这种格式。或者至少是一种使查询和转换更容易的一致格式。例如,时间应该转换为一致的时区,然后您可以根据用户的区域将其转换为您喜欢的任何时区。电话号码在不同地区的格式可能不同,但至少如果您一致保存,您可以在以后处理地区差异。一致性何时变得糟糕?使查询更容易。@Mark我认为这完全取决于。在目标格式上。关于受众和用户期望。在使用它的设备类型上。关于如何使用数据。等等。等等。在不同的情况下,这五个选项中的任何一个都可能是最好的,所以我不认为概括有什么意义。是的……这是(1)的另一个问题。我不喜欢它,因为它很难实现,而且从用户的角度来看,可能有点混乱。我不喜欢网站在我输入之前就把我的输入搞乱了。值得一提的是,当字段失去焦点时重新格式化也可能会让人困惑。用户可能会花时间手动重新格式化字符串,而不知道软件已经准备好为他重新格式化。我个人更喜欢即时格式化,只要它是可靠和简单的。这一点很好,但他可能会在输入一个输入后很快学会。这是一个m