输入出生日期的最佳UI是什么?[关闭]


110

生日选择器的最佳方法是什么?

  • 3个文本输入(月/日/年)或一个掩码输入。用户必须使用键盘
  • 3个选择框。用户可以使用键盘或鼠标。
  • 一个不错的日期选择器

我想知道什么是最可用,最无问题的解决方案,因此用户不会感到困惑。


该jQuery日期选择器似乎可以在Firefox中使用,但不能在IE7中使用。
理查德(Richard Ev)

1
也许他们的网站有问题。Datepicker在IE6 / 7/8,FF,Opera和Safari中运行良好。也许更多:)
爱奥努(Ionu08 Staicu)

11
month / day / year坦白说很奇怪
TRiG 2012年

3
不幸的是,我还是一个小孩子,每月/每天/每年在学校里教我。从科学上讲是没有道理的。
邓肯·卡尔弗特

1
ISO 8601取胜!year / month / day
qqwy

Answers:


28

对于高级用户而言,文本输入是最好的,如果用户知道日期格式,则输入速度非常快。对于不太高级的用户,我建议使用日期选择器。因为通常您也有高级用户和非高级用户,所以我建议将文本输入和日期选择器结合使用。


116
大多数日期选择器的问题在于,追溯到30/40或更多年是痛苦的。
UnkwnTech

3
虽然现在我看他提供的那张,但我认为它还不错。
UnkwnTech

21
进入DOB时,日期选择器实际上是一种糟糕的用户体验,因为Unkwntech提到需要回溯数年。另外,日期时间选择器将特定日期的位置值放在相对于月份和星期的结构上,而在选择DOB时则不需要。
Alex Czarto 2010年

6
jQuery的datepicker有一个选项,用于显示月份和年份的选项下拉菜单,从而可以更快地选择生日。
卡尔·G

1
这是使用HTML5正则表达式强制在iOS设备上使用数字键盘的带掩码文本输入的示例:cde.boaterexam.com/washington/register
Alex Czarto 2014年

161

如果您的目标是确保“根本不会让用户感到困惑”,那么我认为这是最佳选择。

月,日,年的三个下拉菜单

我不建议为出生日期选择日期选择器。首先,您必须浏览到年份(单击,单击,单击…),然后浏览到月份(单击更多),然后找到并单击网格上的小数字。

当您不知道确切的日期时,例如,您计划在二月的第二周旅行,日期选择器将非常有用。


6
推荐:这正是我要给出的答案。Datepicker适用于“我知道这是星期五”的情况,但对于出生日期而言,它没有任何价值。
苗条的

14
不推荐使用:下拉菜单对于用户而言非常烦人,尤其是对于此类数据。参见Nielsen:useit.com/alertbox/20001112.html
Mauricio Scheffer,

5
@mausch这就是为什么我在回答的开头加上“如果您的目标是确保'根本不会让用户感到困惑'。” FTA:“下拉菜单确实有其优势...因为它们是标准的小部件(即使是令人不快的内容),用户也会在遇到下拉菜单时知道如何处理。”
Patrick McElhaney

1
@patrick,您是对的,下拉列表非常标准,但是简单的文本框更自然,恕我直言,因为它更接近纸质表格。我的观点是,人们已经从所有重复中将“ 10/9/1975”深深地扎根于大脑,所以让他们写下这些。
莫里西奥·谢弗

24
那么,您是10月9日还是9月10日出生的?我不会用一个简单的文本框解决这种歧义。
Patrick McElhaney

140

尽管这是一个非常老的问题,但对于正确输入出生日期至关重要,尤其是在注册表中。

我认为没有人比注册Google帐户做得更好:

Google帐户注册

首先从选择框中选择月份,然后手动输入日期和年份。简单。

易于验证。容易使用户正确。不会在1900年至今的选择框中回滚年份。无需根据月份输入更新“天”选择框。在网络上效果很好。在移动设备上效果很好。适用于所有语言环境,例如2014年1月10日-是10月1日还是1月10日?我希望我们将来会看到更多这种生日选择器格式。

日期选择器只是一个糟糕的解决方案。如此多的点击!我认为,日期选择器仅在知道星期几很重要(例如预订机票)时才有用。

2016年2月6日更新:我来自英国,所以我更熟悉日/月/年格式,而不是月/日/年格式。但是,使用光标选择月份的用户,我相信首先拥有选择框要比输入>选择框>输入要容易得多。评论日期是6月2日,而不是2月6日;)


9
为什么这不是最佳答案!
雪人2015年

3
我想补充一点的是,允许用户在选择下拉菜单时键入月份的数字来选择一个值。那是大多数用户习惯输入一个月的内容,因此对于键盘用户来说仍然“正常”。
Elezar 2015年

2
实际上,我考虑得越多,将月份变成下拉菜单并没有什么好处。为什么不仅仅将其设置为文本字段呢?
Elezar

4
为了避免造成月份和日期的混乱,大多数情况下。
Maciej Gurban

2
尽管我们在美国境外的人通常有一个月的前一天。
jezmck '16

25

雅各布·尼尔森(Jakob Nielsen)这篇文章中所述对于用户众所周知的数据,应避免使用下拉列表:

用户熟知的数据菜单,例如他们出生的月份和年份。这样的信息通常被硬连接到用户的手指中,并且不得不从菜单中选择这样的选项破坏了输入信息的标准范例,甚至可以为用户创建更多的工作。

理想的解决方案可能是什么样如下:

  • 提供3个分别用于日期,月份和年份的文本框(正确标记)
  • 根据用户的文化对文本框进行排序。
  • 日和月文本框的大小应设置为允许输入两位数。
  • 年份文本框的大小应设置为4位数字的年份。
  • 允许用户输入2位数或4位数的年份。假设2位数的年份是1900,并更新文本框以反映此onBlur(或在随后的确认步骤中)。
  • 允许用户输入月份号或月份名称。

编辑:这是我们实现DOB选择器的方式:使用HTML5 regex的掩码文本输入字段可在iOS设备上强制数字键盘。

http://www.huntercourse.com/usa/texas/


我要在DOB选择器上进行的唯一修改是将“ MM”,“ DD”,“ YYYY”作为占位符文本而不是提示。
Paul Pettengill 2014年

@Paul使用占位符文本存在可用性方面的挑战。尽管我们最初确实拥有它,但在阅读以下内容后,我们决定将其删除:nngroup.com/articles/form-design-placeholders
Alex Czarto 2014年

@AlexCzarto不错的选择器!(但请注意,如果您输入类似1970
Thiago Duarte

如果出生于2001年6月5日,那么我将DOB输入为“ 050601”,您的建议将其解释为1901年5月6日。适当的信息,如果您提供了月份的下拉菜单,则用户将被迫注意月份的无序放置。
Thelem

如果将月份文本框的大小设置为2位数字,如何允许用户输入月份号或月份名称?
Jin Wang

11

生日与其他日期不同,因为人们通常习惯于键入其特定的生日。
一个用一个例子文本框是明确的,快速和容易进入:

 _______
|_______| (example: 31/3/1970)

这应该支持灵活的格式,例如1/1/1970或20/07/70。

如果您必须使用不同的日期约定(例如美国和英国)来支持不同的文化,那么对于那些不注意该示例的人来说,这可能很容易出错。为避免这种情况,您可以
在月份中使用选择列表,在日期和年份中使用文本框

 _________   __   ____
|March  |V| |__| |____|

这消除了日间和月度订购之间的歧义,但是使用起来有点笨拙。


5

您应该看看Datejs

Datejs是一个开放源代码的JavaScript日期库。

全面而又简单,隐秘且快速。Datejs已通过所有试验,随时可以进行罢工。Datejs不仅解析字符串,还将它们整洁地切成两半。


6
该插件看起来不错,但一个简单问题的25KB似乎有点......
Noel Abrahams 2012年

不同意Noel。日期是程序员通常会遇到的最复杂的事情,尤其是在时区和文化之间(Datejs专为该日期而设计)。
Rustavore

1
@Gitninja-有点像个稻草人。她并没有说约会太多(这是非常复杂的),但是对于一个“简单问题”,我假设是“出生日期”问题。由于有大量的JavaScript库和方法可以在没有25KB的情况下实现解决方案,因此,我同意。
凯里·琼斯

如果在我的表单中添加25kb,则意味着我不必使用下拉菜单,那就这样吧
ladieu 2014年

4

我对解决方案而不是设计的优势感到困扰。OP表示:“我想知道什么是最可用,最无问题的解决方案,因此用户完全不会感到困惑。” 因此,无论是jQuery还是JavaScript,C#或FORTRAN,设计都很重要-在这里重要的是UX设计,而不是UI设计。(另一种避免使用不正确且不合逻辑的结构“ UX / UI”的请求)。

使用文字输入。使用三个分别标记为日,月和年(或月,日和年)的框。让用户键入日期。在同一交互中混合文本和列表是一件很糟糕的事情(例如,不要将文本输入用于年份,而将日期选择器或列表用于月份和日期)。

使用使用字段格式提示的单个文本字段,例如[日/月/年]不需要太严格的格式。如果用户在您期望一个月的地方键入JUN,则在后端使用June。如果用户在您期望一个月的地方输入6,则在后端使用6月。如果用户在期望一个月的地方输入06,则在后端使用6月。

使用Occam的Razor作为指南(实际上,大多数情况下,数据将足够准确)。减少认知摩擦(不要让用户思考)。


使用三个单独的文本框意味着在移动设备上,我必须单击每个文本框以显示数字小键盘。剩下的想法是好的-这都应该是文本框。
PKHunter


3

我曾与我的用户尝试过datePicker,但事实证明这对他们来说是一个糟糕的UI。根据他们的要求,我最终得到了3个文本框,他们可以在其中快速键入[day] [month] [year] :(


2

放两个,并使每个更新另一个。如果用户从日期选择器中选择日期,则很容易解决在文本字段中的轻微误点击,或可视化您在日期选择器中输入文本字段的选择。


我不能两者兼而有之,不适合设计:)我只需要其中之一。
爱奥努

由于datepicker需要javascript,因此请使用javascript仅在需要时显示它。将位置设置为绝对位置,以便它将浮动在所有其他元素上。
一些

通常,您只需要在文本字段中放置图标,然后在其旁边附加图标即可弹出日期选择器。
Tuminoid

2

您为什么不测试所有三个,然后选择性能最佳的一个呢?这似乎是Google网站优化工具测试的不错选择。

可能是因为您拥有的用户类型,或者您正在运行的网站类型决定了您的解决方案应该不同于“规范”。


1

我通常同时使用两种-日期选择器,以正确的格式填充文本字段。高级用户可以直接编辑文本字段,鼠标满意的用户可以使用日期选择器进行选择。

如果您担心空间不足,我通常只会在文本字段旁边加一个小日历图标。如果单击日历图标,它将弹出日期选择器作为弹出窗口。

另外,我发现将文本字段预先填充以指示正确格式的文本(例如:“ DD / MM / YYYY”)是一种很好的做法。当用户聚焦文本字段时,文本消失,因此他们可以输入自己的文本。


1

作为这里的一个老年人,并且出生于月底,我发现出生日期的下拉菜单令人沮丧。我通常必须向下滚动两个下拉菜单,这很尴尬。我宁愿输入。

如果您可以设计一个控件,使其既可以接受下拉菜单也可以被键入,并清楚地说明这两项工作,那就太好了。


这并不是真正的问题,因为大多数浏览器在关注下拉小部件时都支持键入以快速获取正确的值
同行

@thepeer:但是他们看起来并不像。John Norman(“日常事物的设计”)没有所谓的打字负担。
David Thornley 2010年

1

我认为是否使用日期选择器取决于日期是多久以前的。如果它们通常在当月,并且几乎不超过几个月,并且您知道Javascript将会出现,那么日期选择器就很好了。如果日期不是最近的日期(例如生日),我认为这是最佳选择:

http://img411.imageshack.us/img411/6328/mockupg.png

请注意,这与Patrick McElhaney的答案不同,因为年份是文本框,而不是下拉列表。从下拉框中选择一个长度为数百个元素的数字对于用户来说非常烦人。


1
无需将日期设为下拉框。输入并验证介于1到31之间的数字很简单。
Alex Czarto 2010年

1

我认为日期选择器只会使输入人的生日变得更加复杂。

如前所述,对于用户而言,将几天和几个月的下拉列表与一年中的文本框组合在一起似乎是最有效的。这样输入出生日期只需不到10秒,比日期选择器要快得多:多亏了tab键(所有用户都应学会使用此键来填写表格),从一种表格中查找数据很快元素到下一个。

至少在Macintosh(对于Windows我不知道)下,您还可以使用键盘来访问选择框内的日期:由于使用了Tab键,您可以将焦点集中在表单元素上,然后按箭头键进行下拉列表,然后输入例如1967,您就在眨眼之间就到达了…


0

对于国际站点,我希望使用日期选择器(以及带有文档格式的输入框作为备用)。

日期格式各不相同,如果您现在习惯了,它们有时会很难读懂。不幸的是,很多人不满意ISO8601。:-(


0

我建议为每个字段使用一个下拉菜单,确保将每个标签分别标记为日,月和年。日期选择器也可能会有所帮助,但是如果用户未启用JavaScript,它将无法正常工作。


因为这是一个充满Javascript的网站,所以没有JS,没有任何机会无法正常工作。因此,这种担忧现在已经没有用了:)
Ionuț Staicu

如果视障用户想要使用您的网站怎么办?
菲利普莫顿

1
如果使用月份和四位数年份的名称,这将是自标记的,因为这两组值之间不会有任何重叠。
戴夫·谢罗曼

1
不推荐使用:下拉菜单对于用户而言非常烦人,尤其是对于此类数据。参见Nielsen:useit.com/alertbox/20001112.html
Mauricio Scheffer,

0

我会选择一个DatePicker。它是唯一允许专家用户手动输入并指导新手非常容易输入日期的组件。

如果您通过按Tab键进入,但单击一个按钮,日历应该不会弹出。因此,没有专家用户对此感到恼火。


0

谁不使用jQuery UI DatePicker?

它是可配置的,几乎可以满足任何需求。唯一的缺点是,如果将它包含在jQuery UI中,则其占用空间会很大。

更新资料

一些文件大小似乎已更改,因此在下面进行了更新。请记住,这些数字仅在上次更新时才是正确的。从那时起,事情可能发生了变化。

  • CSS主题-23kb
  • jQuery UI-缩小71kb
  • DatePicker-38kb
  • 加上几张图片(下个月/上个月,我确定是拼版的)

但这还不错...


不用担心,您几乎可以将CSS切碎。我只想知道什么是最好的方法;)
Ionuț Staicu 09年

68k ....错了,就像28k css主题一样……
redsquare 2010年

自从我发布此内容以来,@ redsquare的事情可能已经改变。随时编辑我的答案。感谢您也让我知道。
Alex

对于datepicker,只有总的自定义ui js缩小了38k,而使用gzip
压缩的则要

我强烈建议避免使用jQuery datepicker作为生日。我尝试使用它,我们有很多来自客户的抱怨。首先,要追溯到几年之前太困难了。(30年要求使用默认设置进行360次点击)。如果添加年份选择,很多用户只会先单击日期,这会隐藏日期选择器而不会强制选择年份。然后,用户将返回并仅更改年份,而不单击日期,这不会注册年份更改。糟糕的经历。
安德烈

0

JQueryUI日期时间选择器是最佳选择,因为它允许专业用户在文本框中输入自己的值,也可以从选择器中选择它。

设置选择器以允许轻松输入生日或将来的日期也很容易:

$('#datepicker')。datepicker({
    changeMonth:是的,
    changeYear:是的,
    yearRange:'-100:+50'
});

这显示了这样的内容(当我是新用户时,不能发布照片:http : //klalex.com/wp-content/uploads/2009/07/picture-1.png

和yearRange显示从DateTime.Now.Year-100到DateTime.Now.Year + 50的日期

在以下位置找到了此功能:http : //klalex.com/2009/07/jquery-ui-datepicker-for-birth-date-input/


0

我刚刚在JSFiddle上发现了一个插件。两种可能的选择:1个单输入或3个输入,但看起来像一个单输入...(使用Tab键转到下一个输入)

[link] http://jsfiddle.net/davidelrizzo/c8ASE/似乎很有趣!




0

您可以使用插件cxcalendar。看起来像其他日期选择器。但您可以在单击年月标题后在选择中选择年和月。

在此处输入图片说明


这具有上面讨论的所有UX挑战。
PKHunter

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.