表单动作 - 验证时

 概述

让输入的错误数据自由通过的应用程序是无用的。默认情况下,Zoho Creator 支持验证是否有足够数量的字段类型。在创建表单时,您可以为正在定义的字段指定限制条件。例如,如果您将一个字段定义为“电子邮件”类型,Zoho Creator 会核实在表单中的那个字段输入的数据是否为有效的邮箱地址,否则它将向用户显示错误消息。

除了默认验证,Zoho creator 还允许您为自定义验证编写动作脚本。当用户将表单提交到服务器时,在用户数据存储到数据库之前执行此脚本。脚本在服务器端运行,它可以访问用户输入的所有内容。用户输入的语法是 input.<variable_name>,正如下面的例子所示。

“添加时”或“编辑时”块中的验证脚本的默认动作是提交数据,因此如果您想阻止表单被提交,则必须执行 cancel submit。使用“删除时”块中的验证脚本时,您必须执行 cancel delete 以阻止表单删除数据。

您也可以选择在取消时为用户提供适合的提醒消息。然后向用户显示相同的表单以重新输入数据。 

 语法

表单动作 - 添加时 - 验证时:当提交新表单数据时,执行在表单动作 -> 添加时块中编写的验证脚本。表单的脚本定义将显示在脚本构建器的表单定义 -> 包含动作块中,遵循下面给出的格式。 

actions
{
on add
{

Submit
(
type = submit
displayname = "Submit"
on validate
{
// 编写在提交新表单数据时执行的验证表单动作
.............

{
// 如果无效且取消提交,则指定提醒消息
alert "<Specify alert message>";
cancel submit;
}
}
)
}
}

参见 https://creator.zoho.com/sampleapps/script-actions/#Form:On_Validate,为您在那里看到的字段提供不同的邮箱地址并单击“提交”。您将看到消息“邮箱地址不匹配”。以下脚本添加到添加时 -> 验证时部分

if ( (input.Enter_your_Email != input.Confirm_your_Email) )
{
alert "Email Addresses do not match";
cancel submit ;
}

表单动作 - 编辑时 - 验证时:当修改现有记录并提交时,执行表单动作 -> 编辑时块中的验证脚本。表单的脚本定义将显示在脚本构建器的表单定义 -> 包含动作块中,遵循下面给出的格式。 

actions
{
on edit
{
Update
(
type = submit
displayname = "Update"
validate
{
// 编写在修改现有记录并提交时执行的
验证表单动作
............
{
// 如果无效且取消提交,则指定提醒消息
alert "<Specify alert message>";
cancel submit;
}
}
)
}
}

参见 https://creator.zoho.com/sampleapps/script-actions/#View:On_Validate_View,单击任何记录旁边的“编辑”按钮,为您在那里看到的字段提供不同的邮箱地址并单击“提交”。在您单击“提交”之后(使用不同的邮箱地址数据),您将看到消息“发现无效的实体”和“邮箱地址不匹配”。下面的脚本添加到编辑时 -> 验证时

if ( (input.Enter_your_Email != input.Confirm_your_Email) ) {
alert "Email Addresses do not match";
cancel submit ;
}

表单动作 - 删除时 - 验证时当现有记录提交以供删除时,执行表单动作 -> 删除时块中的验证表单动作脚本。表单的脚本定义将显示在脚本构建器的表单定义 -> 包含动作块中,遵循下面给出的格式。 

actions
{
on delete
{
on validate
{
// 编写删除现有记录时执行的验证表单动作
...............
{
// 如果无效且取消提交,则指定提醒消息
alert "<Specify alert message>";
cancel delete;
}
}
}

如果您尝试从 https://creator.zoho.com/sampleapps/script-actions/#View:On_Validate_View 删除任何记录,您将看到错误消息“您没有管理员权限,无法在这里删除记录”。因为应用程序会检查已登录用户,如果他/她不是管理员,则取消删除操作。下面的脚本。

if ( zoho.loginuser != zoho.adminuser)
{
alert “You do not have administrator privileges to delete records here”;
cancel delete;
}

 添加脚本的步骤

请参阅主题使用脚本构建器以了解将脚本添加到表单的步骤。

 示例

 验证字段值是否处于指定范围内

添加到表单动作 -> 添加时 -> 验证时块的以下脚本将验证在 DOB 字段中指定的年份是否大于当前年份。如果为 true,则提交动作将会取消。

if (input.DateOfBirth.getYear() > zoho.currentdate.getYear())
{
alert "Enter valid Date of Birth";
cancel submit;
}

 检查记录是否重复 

添加到表单动作 -> 添加时 -> 验证时块的以下脚本验证具有相同名称的重复记录。如果具有相同名称的团队成员添加了多次,则提交动作将取消。

if (count(team_member[name == input.name]) > 0)
{
alert "Name already exists";
cancel submit;
}

其中,

team_member [name == input.name] - 选择其名称等于当前输入名称的所有团队成员。
input.name - 它是在提交表单时由用户为字段“name”给出的值
count - 计数运算符返回其名称等于 this.name 的团队成员树

 避免表单被同一个用户回答两次

如果您希望您的表单不会被同一个用户输入两次,则可以在表单脚本的添加时 -> 验证时部分添加逻辑以检查用户是否已经输入数据。下面的代码可避免使用相同的邮箱地址将表单提交两次。在下面找到示例脚本:

if (count (myForm [Email == input.Email]) >1 )
{
alert “We have already received an answer from this email”;
cancel submit;
}

如果您已经与用户共享应用程序,请使用以下脚本(它并不能对公共表单很好地起作用)

if (count (myForm [Added_User == zoho.loginuser]) >1 )
{
alert “We have already received an answer from this account”;
cancel submit;
}