百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术流 > 正文

字符串函数:搞定增强型“注册验证”条件设置

citgpt 2024-06-26 14:46 6 浏览 0 评论

在上一篇的《中继器使用场景(五):真实环境注册、多身份登录、找回密码》中提到,会专门就注册条件验证的案例出一篇教程,今天就详述如下:

原型参照:QQ注册。为了集中讲解,将qq昵称注册和邮箱账号注册合二为一,为大家演示。

字符串函数:搞定增强型“注册验证”条件设置

先看演示GIF图

功能梳理

1、昵称不能包含中文,不能为空,失去焦点时,会出现不同的提示

2、密码不能包含空格,长度为8-16位,包含字母、数字、特殊符号(英文半角符号)不少于2种

3、密码框在密码输入变化时,实时检测是否符合标准(留意gif图中“灰色!”和“绿色√”图标的变化)

4、点击眼睛图标,能将密码中的“●”显示为输入的文本,松开鼠标时,又恢复为“●”

5、密码框失去焦点时,如果密码不符合规则,按优先顺序显示错误提示(留意gif图中红色错误提示的出现规律)

6、邮件地址不能为空,要有“.”“@”符号,不能包含中文,“.”和“@”之间要有字符,不能有两个@

7、手机号必须是数字,必须是1开头,必须满11位

8、验证码为两个数字两个字母组合,每刷新一次,更换一次,随机更换,不重复。

9、验证码栏不能为空,不能和验证图片不符

需要用到的函数

1、length:获取当前文本对象的长度,即字符个数;1个汉字的长度按1计算。

2、charAt(index):获取当前文本对象中指定位置的字符,index为大于等于0的整数。位置从0开始算

3、charCodeAt(index):获取当前文本对象中指定位置字符的Unicode编码,起始位置从0开始。

4、indexOf(‘searchValue’):从左至右获取查询字符串在当前文本对象中首次出现的位置。未查询到时返回值为-1。

5、lastIndexOf(‘searchvalue’):从右至左获取查询字符串在当前文本对象中首次出现的位置。未查询到时返回值为-1。

6、数字函数Math.random:随机数函数,返回一个0~1之间的随机数。

7、数字函数Math.floor(x):向下取整函数,获取小于或者等于指定数值的最大整数。x为数字

原型制作

第一部分 昵称注册验证

元件分布

交互设置

特别说明:

  1. nicheng文本框和nicheng2文本框都要隐藏边框,边框颜色的变化靠矩形nicheng□来表现
  2. charAt(index)的起始位置为0而不是1,这是“LVAR1.length-1”的原因
  3. 当按下Backspace键即退格删除键时,nicheng2文字==nicheng的原始文本,nicheng2比nicheng多一个字符,多的这个字符就是记录nicheng被删除的那个字符。看下方GIF示例

这个交互有一定的瑕疵,就是按退格键时要从后向前依次删除,能够正常演示,如果是鼠标随意插入到汉字的前后,进行删除,就不能正常判断了。

这个靠AXURE自身是解决不了的,会写JS编码的朋友,可以在axure中写入JS编码来实现。也欢迎会写代码的朋友,在回复中留言。

第二部分 密码的注册验证

元件分布

交互设置

最后加上,密码可见性的交互

特别说明:

为什么一定是英文半角符号,因为在实际写代码的过程中,当输入密码时,会只允许调用英文键盘,不会出现汉字和全角符号,所以大家在测试演示原型时,要输入半角英文符号测试。

第三部分 邮箱地址的注册验证

元件分布

交互设置

特别说明:有兴趣的朋友,可以将“不能含有汉字”的交互加入进去,在这里就不再赘述

第四部分 手机号码的注册验证

元件分布

交互设置

特别说明:有兴趣的朋友,可以将“不能含有汉字”的交互加入进去,在这里就不再赘述,还可以加入“不能有5个以上相同的数字”的交互,用Unicode判断即可

第五部分 验证码的注册验证

元件分布

交互设置

[[Math.floor(Math.random()*10)]] 取0-9的随机数

[[LVAR1.charAt(Math.floor(Math.random()*52))]] 随机截取写有52个字母的zimu文本框中的字母

所有关于靠函数验证注册条件的交互完毕。

本文由 @bobowang 原创发布于人人都是产品经理。未经许可,禁止转载

题图来自 Pexels ,基于 CC0 协议

相关推荐

js中arguments详解

一、简介了解arguments这个对象之前先来认识一下javascript的一些功能:其实Javascript并没有重载函数的功能,但是Arguments对象能够模拟重载。Javascrip中每个函数...

firewall-cmd 常用命令

目录firewalldzone说明firewallzone内容说明firewall-cmd常用参数firewall-cmd常用命令常用命令 回到顶部firewalldzone...

epel-release 是什么

EPEL-release(ExtraPackagesforEnterpriseLinux)是一个软件仓库,它为企业级Linux发行版(如CentOS、RHEL等)提供额外的软件包。以下是关于E...

FullGC详解  什么是 JVM 的 GC
FullGC详解 什么是 JVM 的 GC

前言:背景:一、什么是JVM的GC?JVM(JavaVirtualMachine)。JVM是Java程序的虚拟机,是一种实现Java语言的解...

2024-10-26 08:50 citgpt

使用Spire.Doc组件利用模板导出Word文档
  • 使用Spire.Doc组件利用模板导出Word文档
  • 使用Spire.Doc组件利用模板导出Word文档
  • 使用Spire.Doc组件利用模板导出Word文档
  • 使用Spire.Doc组件利用模板导出Word文档
跨域(CrossOrigin)

1.介绍  1)跨域问题:跨域问题是在网络中,当一个网络的运行脚本(通常时JavaScript)试图访问另一个网络的资源时,如果这两个网络的端口、协议和域名不一致时就会出现跨域问题。    通俗讲...

微服务架构和分布式架构的区别

1、含义不同微服务架构:微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并...

深入理解与应用CSS clip-path 属性
深入理解与应用CSS clip-path 属性

clip-pathclip-path是什么clip-path 是一个CSS属性,允许开发者创建一个剪切区域,从而决定元素的哪些部分可见,哪些部分会被隐...

2024-10-25 11:51 citgpt

HCNP Routing&Switching之OSPF LSA类型(二)
  • HCNP Routing&Switching之OSPF LSA类型(二)
  • HCNP Routing&Switching之OSPF LSA类型(二)
  • HCNP Routing&Switching之OSPF LSA类型(二)
  • HCNP Routing&Switching之OSPF LSA类型(二)
Redis和Memcached的区别详解
  • Redis和Memcached的区别详解
  • Redis和Memcached的区别详解
  • Redis和Memcached的区别详解
  • Redis和Memcached的区别详解
Request.ServerVariables 大全

Request.ServerVariables("Url")返回服务器地址Request.ServerVariables("Path_Info")客户端提供的路...

python操作Kafka

目录一、python操作kafka1.python使用kafka生产者2.python使用kafka消费者3.使用docker中的kafka二、python操作kafka细...

Runtime.getRuntime().exec详解

Runtime.getRuntime().exec详解概述Runtime.getRuntime().exec用于调用外部可执行程序或系统命令,并重定向外部程序的标准输入、标准输出和标准错误到缓冲池。...

promise.all详解 promise.all是干什么的
promise.all详解 promise.all是干什么的

promise.all详解promise.all中所有的请求成功了,走.then(),在.then()中能得到一个数组,数组中是每个请求resolve抛出的结果...

2024-10-24 16:21 citgpt

Content-Length和Transfer-Encoding详解
  • Content-Length和Transfer-Encoding详解
  • Content-Length和Transfer-Encoding详解
  • Content-Length和Transfer-Encoding详解
  • Content-Length和Transfer-Encoding详解

取消回复欢迎 发表评论: