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

从原理到实操,教你作一个登录注册的小Demo

citgpt 2024-06-26 14:47 10 浏览 0 评论

登录注册界面看起来好像挺简单,但是要把登录注册界面做好,却也不是一件简单的事情。最近用Axure做了一个登录注册的小Demo,欢迎大家批评指正。

从原理到实操,教你作一个登录注册的小Demo

这篇文章主要分为两个部分,第一部分先简单介绍下注册功能,第二部分介绍下部分功能的实现。

第一部分:简单的介绍注册功能

首先上原型链接:http://3d9jya.axshare.com(加载稍微有点慢,请大家耐心等待)

上图便是注册界面,首先注册界面没有确认密码表单,为什么?这并不是因为我忘记了,而是有原因的。首先,大家有没有注意到现在很多网站的注册都省去了这一步,比如百度,人人等。

我觉得原因可能是以下两种:

  1. 注册这个过程至关重要,如果步骤过于繁琐,用户很可能就会在这一步放弃了;
  2. 现在的注册大多数是基于手机号码和邮箱,找回密码的成本很低,况且现在用户拥有那么多账号密码,你可以确保用户下次登录的时候就记得密码?

接着来看一下注册功能的流程图:

简单概说一下流程图:

当用户点击注册按钮的时候,会去检查三个文本框中的内容是否符合条件?以及输入是否正确?如果不符合条件或者输入不正确,会分别给出明确的错误提示。

当用户点击电话号码文本框的时候,第一步先检查密码框和验证码框是否出现为空的错误提示,如果是,则清除为空的错误提示,注意是为空的错误提示;第二步检查用户输入的是否为空或者不符合手机号码格式,如果出现这种情况,就给用户明确的错误提示,如果输入的是11位数字且符合手机号码规范,就清除错误提示。

那么问题来了,在第一步中我为什么要去清除密码框或者验证码框中为空的错误提示呢?我想你也注册过,你也不想在注册的过程中看见一大串红色的错误提示吧,看见都烦了。至于为什么只是清除为空的错误提示,因为如果你把其他错误提示删了,用户就会以为输入的是正确,等点击注册的时候又得回去改一次。点击密码框就会去检测上边的手机号码是否为空和自身是否为空和长度是否6位以上。在这里就不再对密码框和验证码的验证多做叙述了。

当所有条件都满足时,点击注册按钮会发送验证码并弹出一个输入验证码的窗口,如下图所示:

本来我是打算弹出窗口时不用经过“点击获取”就可以进行倒计时的,我把这个功能写在页面载入时,但是每次开始倒计的时间都不一样,恳请各位大佬指点下。

至于登录部分跟注册部分也差不了多少,各位看官可以看一下上边的原型链接,附带流程图哦。

第二部分:介绍部分功能的实现

1. 随机验证码的生成

(1)首先先设置一个全局变量random_str,全局变量的值为ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789。

(2)然后在密码框上边放置一个文本标签,在页面载入时设置文本标签的值。

random_str.substr(random_str.length*Math.random,1) 表示随机获取某个字符,所以连续获取四个就组成一个随机验证码了。

2. 弹出输入手机短信验证窗口

创建两个动态面板,把其中一个动态面板设置背景色跟透明度后置于注册登录页面上,设置固定于浏览器,起到一个遮盖的作用。另一个动态面板就充当弹出窗口。

3. 倒计时的实现

(1)首先拉出一个按钮和动态面板(包含两个状态)

(2)设置一个全局变量,表示你要倒计的时间。

(3)点击“点击获取”按钮,触发循环遍历动态面板事件,且每次间隔一秒,并把按钮设置为禁用。

(4)设置动态面板的状态改变事件。当状态改变时,判断全局变量是否大于0,如果大于0则设置让全局变量自减,然后把全局变量复制给按钮的文本值。

好了,到此介绍完毕,如果有错误的地方,欢迎批评指正。

作者:calmlee,一名立志从事产品岗位的大四学生,求一份产品实习工作。坐标:广州。邮箱:1935757072@qq.com

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

相关推荐

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详解

取消回复欢迎 发表评论: