表单控件与日期时间输入

移动应用开发中,表单控件的使用非常普遍,它们是用户与应用交互的重要方式之一。本章将介绍日期和时间表单控件的设计与实现。这些控件允许用户输入日期和时间信息,并且可以设置各种限制条件,以确保输入数据的有效性和准确性。

日期和时间表单控件

日期和时间表单控件通常用于收集用户的日期和时间信息。这些控件可以设计成只接受特定日期范围内的输入,或者只接受不早于当前日期的输入。下面是一个日期表单控件的示例,它要求用户选择的日期不能早于当天。

{ "mainScreen": { "screenID": "Date 1", "screenDisplayArray": [ { "localeCode": "zh-CN", "screenLabel": "1. 请选择一个日期", "screenHint": "选择的日期不能早于今天。" } ], "screenwidgetType": "date", "inputRequired": true, "widgetSchema": " \"Date 1\": { \"type\": \"object\", \"properties\": { \"dateYear\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9999 }, \"dateMonth\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 12 }, \"dateDay\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 31 }, \"saveAsUtc\": { \"type\": \"boolean\", \"default\": true } }, \"required\": [\"dateYear\", \"dateMonth\", \"dateDay\"], \"minProperties\": 3, \"maxProperties\": 3, \"additionalProperties\": false }", "dateOption": { "gtEqToday": true } } }

在这个示例中,定义了一个名为 "Date 1" 的日期表单控件。它要求用户输入年、月、日三个字段,并且设置了一个条件,即用户选择的日期不能早于当前日期。

时间表单控件则允许用户选择小时和分钟值。下面是一个时间表单控件的示例,它允许用户自由选择时间,但默认情况下,用户选择的时间会被转换为协调世界时(UTC)并保存。

{ "mainScreen": { "screenID": "Time 1", "screenDisplayArray": [ { "localeCode": "zh-CN", "screenLabel": "2. 请选择一个时间", "screenHint": ":" } ], "screenwidgetType": "time", "inputRequired": true, "widgetSchema": " \"Time 1\": { \"type\": \"object\", \"properties\": { \"timeHour\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 23 }, \"timeMinutes\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 59 }, \"timeSeconds\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 59 }, \"saveAsUtc\": { \"type\": \"boolean\", \"default\": true } }, \"required\": [\"timeHour\", \"timeMinutes\"], \"minProperties\": 2, "maxProperties": 3, "additionalProperties": false }" } }

在这个时间表单控件的示例中,定义了一个名为 "Time 1" 的时间表单控件。它允许用户输入小时和分钟,并且可以选择是否将时间转换为UTC时间保存。

日期和时间范围限制

除了可以设置日期和时间的最小值和最大值之外,还可以设置特定的日期和时间范围。例如,可以限制用户只能选择某个特定月份的日期,或者只能选择某个时间段内的时间。

以下是一个日期表单控件的示例,它限制用户只能选择2016年6月的日期。

{ "mainScreen": { "screenID": "Date 2", "screenDisplayArray": [ { "localeCode": "zh-CN", "screenLabel": "3. 请选择2016年6月的日期", "screenHint": "选择的日期必须在2016年6月。" } ], "screenwidgetType": "date", "inputRequired": true, "widgetSchema": " \"Date 2\": { \"type\": \"object\", \"properties\": { \"dateYear\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 9999 }, \"dateMonth\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 12 }, \"dateDay\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 31 }, \"saveAsUtc\": { \"type\": \"boolean\", \"default\": false } }, \"required\": [\"dateYear\", \"dateMonth\", \"dateDay\"], \"minProperties\": 3, \"maxProperties\": 3, \"additionalProperties\": false }", "dateOption": { "minDate": { "dateYear": 2016, "dateMonth": 6, "dateDay": 1 }, "maxDate": { "dateYear": 2016, "dateMonth": 6, "dateDay": 30 }, "gtEqToday": false } } }

在这个示例中,定义了一个名为 "Date 2" 的日期表单控件,并限制用户只能选择2016年6月的日期。

同样地,也可以为时间表单控件设置时间范围。以下是一个时间表单控件的示例,它限制用户只能选择下午12点到2点之间的时间。

{ "mainScreen": { "screenID": "Time 2", "screenDisplayArray": [ { "localeCode": "zh-CN", "screenLabel": "4. 请选择午餐开始的时间", "screenHint": "选择的时间应在12点到2点之间。" } ], "screenwidgetType": "time", "inputRequired": true, "widgetSchema": " \"Time 2\": { \"type\": \"object\", \"properties\": { \"timeHour\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 23 }, \"timeMinutes\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 59 }, \"timeSeconds\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 59 }, \"saveAsUtc\": { \"type\": \"boolean\", \"default\": false } }, \"required\": [\"timeHour\", \"timeMinutes\"], \"minProperties\": 2, "maxProperties": 3, "additionalProperties": false }", "timeOption": { "minTime": { "timeHour": 12, "timeMinutes": 0, "timeSeconds": 0 }, "maxTime": { "timeHour": 14, "timeMinutes": 0, "timeSeconds": 0 } } } }

在这个示例中,定义了一个名为 "Time 2" 的时间表单控件,并限制用户只能选择下午12点到2点之间的时间。

本文的最后一章,即第8章,将介绍一些不特定于任何单一屏幕类型的功能。

有兴趣的读者可以跟随这些指南中的表单设计部分,并使用这个GUI工具来学习更多关于基于多种用例场景设计表单的知识。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485