行业

汽车

航空

金融

游戏

医疗科技

物联网

数字产品

使用场景

面向企业

面向个人

面向团队

用于教育

主要特点

硬件与系统集成

公测版

ProtoPie MCP

多设备原型设计

交互逻辑

开发交接

ProtoPie AI

用户测试

插件

Figma

Sketch

Adobe XD

洞见与灵感

博客

白皮书

客户成功案例

活动与网络研讨会

ProtoPie 画廊

产品学习与支持

ProtoPie 学堂

下载 ProtoPie

产品文档

社区

行业

汽车

航空

金融

游戏

医疗科技

物联网

数字产品

使用场景

面向企业

面向个人

面向团队

用于教育

主要特点

硬件与系统集成

公测版

ProtoPie MCP

多设备原型设计

交互逻辑

开发交接

ProtoPie AI

用户测试

插件

Figma

Sketch

Adobe XD

洞见与灵感

博客

白皮书

客户成功案例

活动与网络研讨会

ProtoPie 画廊

产品学习与支持

ProtoPie 学堂

下载 ProtoPie

产品文档

社区

教程

11

阅读时间

创建可检查用户输入的交互式表单字段的最简单方法

我们将学习如何在你的原型中创建文本字段,以检查用户输入的内容是否正确。

迈克尔·阿贾, 自由职业产品设计师

[起始 Pie 文件] [完成的 Pie 文件]

介绍

想知道如何在你的原型中创建文本字段,并检查用户输入是否正确吗?我们准备了一个非常简单的教程来帮助你。

在开始之前,你需要了解什么是输入验证以及它如何工作。那么,输入验证到底是什么呢?

输入验证是现代应用和 Web 应用中的常见功能。这个功能不仅用于引导用户,还能帮助验证用户在表单字段中输入的内容是否正确。例如,在许多网站的邮箱字段中,如果你输入了错误的邮箱格式,就会收到一条提示,告诉你所用的邮箱格式不正确。这意味着表单已经检查了输入并检测到其不正确。

ProtoPie 让创建这类表单变得容易,因为它有两个主要触发器——InputDetect,可以很好地模拟带验证的表单字段行为。Input 功能允许你在文本字段中输入,而 Detect 功能会检查你在输入字段中输入的内容。

在 ProtoPie 中有效结合这两个触发器后,你就可以开始创建带验证的表单字段了。本课中我们会同时使用这两个触发器。

你将学到什么

  1. 创建带输入验证文本字段的通用结构

  2. 如何制作必填输入字段

  3. 如何检查输入值是错误还是正确

  4. 如何检查输入中文本或数字字符的长度

  5. 如何限定输入字段中的字符

先从输入字段文本验证的通用结构开始

通常,在 ProtoPie 中验证文本字段输入内容的方法遵循一种相似结构,包含两个主要触发器:FocusDetect

  • Focus(Focus out) 用于当文本不满足要求时触发错误消息。

  • Detect 用于在文本满足要求时进行检查/验证,从而让错误消息消失。

在每个触发器中,都会使用 Condition 来检查文本是否满足要求。

要实现不同类型的验证,我们只需更改每个触发器下的条件。下面的用例会展示如何在不同验证场景中复用这个结构。


Photo showing the structure of an input validation in ProtoPie

如何创建必填 Input 字段

input 的 required 属性用于指定表单字段在提交前是否必须填写。


An example of a required input field

 1. 在输入层 Input - First Name. 上添加一个 Focus 触发器。在属性面板中选择 **Focus Out **。


Add a Focus trigger to the input layer Input - First Name

Focus 触发器会在输入层发生 focus in 或 focus out 时激活响应。此处使用 Focus Out,因为验证需要在用户完成输入后触发。

 2. 在 Focus 触发器下,为输入层 Input - First Name. 添加一个 Condition。只需将通常默认显示为 X第二个下拉框改为 Text.


Add a Condition to the input layer Input - First Name

现在条件应显示为 Text of Input - First Name = "NONE"。该条件用于判断输入是否已填写。当输入未填写时,此条件下的响应会执行。

💡 为什么我们把值留空?

值留空或设为 none 的原因是:我们希望在输入框为空、用户未输入任何内容时显示响应。因此公式为(Text of Input - First Name = "NONE"

 3. 在刚创建的条件下,为该输入添加一个 Border 响应,并按下图设置其属性。这样当输入框为空时会高亮边框。


Add a Border response to the input under the condition just created

 4. 在图层面板中选择错误提示(Please enter your first name.),然后点击 + 图标并为该错误提示添加一个 Opacity 响应。将不透明度设为 100。这样当输入框为空时会显示错误提示。


Add an Opacity response to the error message

 5. 现在为 Input - First Name. 添加一个新触发器——Detect。操作方法:选中输入字段,点击 add trigger 并选择 Detect 触发器。Detect 会在输入文本变化时触发响应。


Add a Detect trigger

 6. 在 detect 触发器下添加一个条件:Text of Input - First Name ≠ "NONE"。做法与第 2 步相同。唯一需要修改的是将 = 改为 。当输入已填写时,此条件下的响应会执行。


Add a Condition for Text of Input - First Name ≠ "NONE"

 7. 在该条件下,为输入添加一个 Border 响应,并按下图设置其属性。在此条件下边框会消失。


Add a Border response to the input

 8. 同时,为错误提示文本(Please enter your first name.)添加一个 Opacity 响应。将不透明度设为 0。这样在此条件下错误提示会消失。


Add an Opacity response to the error message text

 9. 太棒了!你刚刚创建了一个必填输入字段。现在去 Preview Window 中查看交互效果吧。

如何验证输入值

input 的 value 属性用于指定数值型输入的值。


An example of value validation

在上述场景中,文本值应大于或等于 18。

我们还需要在条件中使用公式

 1. 创建两个带条件的触发器。一个是 Focus 触发器,另一个是 Detect 触发器。

 2. 创建条件后,如需切换到公式,将下拉选择从input component改为 Formula

 3. 选中公式后,将以下公式复制并粘贴到公式字段下方:number('Input - Age'.text)该公式可将文本转换为数字。

** 4. 在 Focus** 触发器下,条件设为 number('Input - Age'.text) < "18"。这意味着粘贴公式后,条件符号为 <,值为 18。

 5. 在 Detect 触发器下,条件设为 number('Input - Age'.text) ≥ "18"。这意味着粘贴公式后,条件符号为 ,值为 18。

请参考下图。


Triggers and responses needed for making a value validation

如何验证输入长度

length 属性用于指定文本数据(字符串)的长度。


An example of text length validation

在上述案例中,文本长度是固定的。否则会显示错误消息。

和前一个示例一样,我们会在条件中使用公式。这里使用的公式是 length('Input - Card number'.text)。该公式用于统计文本中的字符数。

  • 在 Focus 触发器下,条件设为 length('Input - Card number'.text) ≠ "22"

  • Detect 触发器下,条件设为 length('Input - Card number'.text) = "22"


Triggers and responses needed for making a length validation

想知道在上述场景中如何制作自动格式化的输入字段原型吗?查看这个教程了解更多。

此方法也可应用于更多场景


Password (at least 8 characters)


密码(至少 8 个字符)


Making a character counter for multi-line input


为多行输入制作字符计数器

下载完成的 pie 文件查看这些演示。

如何限定输入字段中的字符

用于指定数据是否必须是数字、电子邮箱地址或其他特定预设类型。


Specify characters inside an input field

在上述案例中,输入内容需要是电子邮箱地址。否则会显示错误消息。在 ProtoPie 中验证邮箱的方法是检查输入文本是否同时包含 ".""@"

每个触发器都需要 2 个条件。这里使用的公式是 indexOf('Input - Email'.text,".")indexOf('Input - Email'.text,"@")

💡 **indexOf(): **查找关键字在文本中的起始位置。如果文本中不存在该关键字,返回值为 -1。

  • indexOf(source:TEXT,searchValue:TEXT) → NUMBER

 1. 在 Focus 触发器下,条件设为:indexOf('Input - Email'.text,".") = "-1"indexOf'(Input - Email'.text,"@") = "-1". 我们需要将这些公式放入 2 个条件中。

  • 第一个条件:indexOf('Input - Email'.text,".") = "-1" 用于检查用户输入中是否有点号。然后进入下一个条件,即使用公式 indexOf('Input - Email'.text,"@") = "-1" 来确认输入中是否有@符号。

  • 请注意,@ 符号和点号位于 'Email'.text 之后,它是用户邮箱地址的前缀,也属于这两个条件的一部分。因此如果你的邮箱是 michaelajah@example.com,你的 @点号都必须出现在 michaelajah 之后。

 2. 在 Detect 触发器下,条件设为:indexOf('Input - Email'.text,".") ≠ "-1"indexOf('Input - Email'.text,"@") ≠ "-1"。我们可以把这些公式放在 1 个条件里。在 focus 触发器中,我们将当两个条件都为真时的输入值设为 -1。此 detect 触发器中的条件用于检查输入值是否不等于 -1。


Triggers and responses needed for making a email input validation

💡 为什么在 Focus 触发器下使用 2 个独立条件?

因为我们希望当这些条件中的任意一个满足时就显示错误消息。

💡 为什么在 Detect 触发器下只使用 1 个条件?

因为我们希望当这些条件全部满足时错误消息消失。

此方法也可应用于更多场景


URL Validation


URL 验证


Username (no space allowed)


用户名(不允许空格)

下载完成的 pie 文件查看这些演示。

总结

做得好!你已经学会了如何创建一个能够验证用户输入是否正确的文本字段。你还学会了如何使用条件和公式来检测并验证输入字段!

多花些时间练习这些教程,你很快就能成为 ProtoPie 高手。我们很想看到你的创意实验。创建你自己的原型,并在 TwitterInstagram 上带上 #MadeWithProtoPie 分享出来吧。

[这有帮助吗?告诉我们!]