angular.js 验证码注册登录
css部分
header{
height: 50px;
line-height: 50px;
display: flex;
}
.callback{
text-align: left;
display: block;
margin-left: 10px;
}
header span:nth-child(2){
flex: 1
}
.content{
background: black;
height: 100%;
overflow: hidden;
padding: 0 20px;
}
.logo{
margin: 33px 46px;
}
.logo img{
width: 100%;
height: 100%;
}
.content p{
color: white;
text-align: left;
font-size: 13px;
}
.enjoy{
color: #FF9900
}
.phoneNumber{
display: flex;
border-bottom: 1px solid white;
padding: 5px 0px;
}
.phoneNumber input{
border: none;
background: black;
color: white;
font-size: 15px;
width: 100%;
outline:none;
padding: 0;
margin: 0
}
.phoneNumber button{
background: black;
width: 117px;
height: 36px;
border: 1px solid white;
color: white;
font-size: 13px;
border-radius: 5px;
outline:none;
}
.register{
margin-top: 27px;
}
.Submission{
height: 45px;
width: 100%;
margin-top: 40px;
background-color: #EABC2E;
border: none;
outline:none;
border-radius: 5px;
}
.introduce{
margin: 54px 0;
height: 154px;
border: 1px solid #EABC2E;
border-radius: 5px;
padding-left: 11px;
}
.introduce ul li{
text-align: left;
color: white;
line-height: 25px;
font-size: 13px;
}
.introduce p{
line-height: 40px;
}
.Copyright{
height: 50px;
background-color: black;
color: white;
margin: 0;
font-size: 12px;
text-align: center;
}
.errorFalse{
position: fixed;
background: rgba(0, 0, 0, 0.7);
z-index: 999;
width: 100%;
height: 100%;
top: 0;
bottom: 0;
display: none;
}
.errorFalse .link{
position: absolute;
top: 42%;
width: 79%;
left: 0;
right: 0;
height: 100px;
margin: 0 auto;
border-radius: 5px;
border: 1px solid #EABC2E;
}
.errorFalse .link p{
color: white;
line-height: 0px;
padding-top: 36px;
}
页面部分
<section>
<div class="content">
<div class="logo">
<img src="images/logo.png" alt="" srcset="">
</div>
<p>{{Inviter_name}}邀请你注册X的现身</p>
<p>注册成功后,你在「X的现身」APP中将
<span class="enjoy">永久享受充值优惠权限!</span>
</p>
<form name="myForm" novalidate>
<!-- 手机验证 -->
<div class="register">
<div class="phoneNumber">
<input type="number" placeholder="请输入您的手机号" ng-model="user.phone" name="phone" maxlength="11" required/>
<button ng-click="getCode()" ng-bind="description" ng-disabled="canClick">获取验证码</button>
</div>
<div class="phoneNumber">
<input type="text" value="" placeholder="请输入短信中的验证码" ng-model="user.code" required/>
</div>
<button class="Submission" ng-click="register()">下一步</button>
</div>
</form>
<!-- 介绍 -->
<div class="introduce">
<p>「X的现身」APP 介绍:</p>
<ul>
<li>· 一款可以玩的狼人杀主题社交APP</li>
<li>· 全新的狼人杀游戏体验,回归经典的面杀形式</li>
<li>· 在这里可以发现更多有趣的人和事</li>
<li>· 新一代陌生人之间的破冰神器</li>
</ul>
</div>
<div class="Copyright">
<p>Copyright © 2017-2018 北京咱们一起文化发展有限公司</p>
</div>
</div>
<div class="errorFalse ">
<div class="link">
<p>该手机号已注册「X的现身」</p>
<p>系统将自动为您跳转到下载页面</p>
</div>
</div>
</section>
js 部分
var app = angular.module("myApp", []);
app.controller("myCtrl", function ($scope, $http, $interval, $location) {
//初始化
$scope.canClick = false;
$scope.description = '获取验证码';
$scope.second = 60;
$scope.Inviter_name = $location.search().Inviter_name;
$scope.user = {
"phone": "",
"code": ""
}
//验证手机号
$scope.checkphone = function () {
phone = $scope.user.phone;
if (phone == '') {
mui.toast('手机号码不能为空');
return false;
} else if (!(/^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/.test(phone))) {
mui.toast('请填写正确的手机号');
return false;
}
return true;
}
//验证验证码
$scope.checkcode = function () {
code = $scope.user.code;
if (code == '') {
mui.toast('验证码错误');
return false;
}
return true;
}
//获取验证码
$scope.getCode = function () {
//验证手机号
if (!$scope.checkphone()) {
return false;
}
// 判断是canClick == true的时候说明获取验证码是点击后
if ($scope.canClick == false) {
$scope.url =
phone = $scope.user.phone;
$http({
method: "GET",
url: $scope.url,
dataType: 'jsonp',
params: {
}
}).success(function (data) {
console.log(data)
if (data.status = 22000) {
var timePromise = $interval(function () {
if ($scope.second <= 0) {
$interval.cancel(timePromise);
$scope.second = 60;
$scope.description = "重发验证码";
$scope.canClick = false;
} else {
$scope.second--;
$scope.description = $scope.second + "秒后重发";
$scope.canClick = true;
}
}, 1000);
}
})
}
}
//提交信息
$scope.register = function () {
$scope.invite_code = $location.search().invite_code;
if (!$scope.checkphone()) {
return false;
}
if (!$scope.checkcode()) {
return false;
}
$scope.url =
$http({
method: "GET",
url: $scope.url,
params: {
}
}).success(function (result) {
});
}
})
话不多说,直借粘贴代码用吧。 https://www.xappearance.com/m/ 这个我们的官网可以下载狼人杀的游戏。 代码不完美,请赐教。。
angular.js 验证码注册登录的更多相关文章
- Angular之简单的登录注册
使用Angular实现了一个简单的登录注册的功能........ 涉及到的Angular知识点很少 主要是这个功能的实现...(*^__^*) 嘻嘻…… 里面涉及到的知识点记录: 1.本地存储的操作 ...
- Node.js基于Express框架搭建一个简单的注册登录Web功能
这个小应用使用到了node.js bootstrap express 以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注 ...
- 原生js验证简洁美观注册登录页面
序 一个以js验证表单的简洁的注册登录页面,不多说直接上图 效果 主要文件 完整代码 sign_up.html 注册表单 <!DOCTYPE html> <html lang=&qu ...
- Node.js原生及Express方法实现注册登录原理
由于本文只是实现其原理,所以没有使用数据库,只是在js里面模拟数据库,当然是种中还是需要用数据库的. 1.node.js原生方法 ①html页面,非常简单,没有一丝美化~我们叫它user.html & ...
- node.js 初学(二)—— 搭建注册/登录服务器
node.js 初学(二)—— 搭建注册/登录服务器 理论上来说,代码实现在理论和实际上是一样的.但实际上来说,他们不是 做一个最简单的用户注册登录功能 1.接口定义: 注册:/user?act=re ...
- Angular JS 中的服务注册方法
在Angular JS中创建服务的几种方法 factory() service() constant() value() provider() factory(name,fn(){}) 该服务为单例的 ...
- 一步步开发自己的博客 .NET版(3、注册登录功能)
前言 这次开发的博客主要功能或特点: 第一:可以兼容各终端,特别是手机端. 第二:到时会用到大量html5,炫啊. 第三:导入博客园的精华文章,并做分类.(不要封我) 第四:做 ...
- MVC、MVP、MVVM、Angular.js、Knockout.js、Backbone.js、React.js、Ember.js、Avalon.js、Vue.js 概念摘录
注:文章内容都是摘录性文字,自己阅读的一些笔记,方便日后查看. MVC MVC(Model-View-Controller),M 是指业务模型,V 是指用户界面,C 则是控制器,使用 MVC 的目的是 ...
- 8、ABPZero系列教程之拼多多卖家工具 添加手机注册登录功能
现在网站基本都用手机注册,很少用邮箱注册,本篇内容比较多,代码我会尽量加备注,有些操作需要连续添加几个文件才不报错,如果VS显示错误,请继续后续步骤. 前面已经有一篇文章讲到集成短信发送模块:http ...
随机推荐
- Zookeeper(三) Zookeeper原理与应用
一.zookeeper原理解析 1.进群角色描述 2.Paxos 算法概述( ZAB 协议) 分布式一致性算法 3.Zookeeper 的选主(恢复模式) 以一个简单的例子来说明整个选举的过程. ...
- bzoj3173: [Tjoi2013]最长上升子序列(fhqtreap)
这题用fhqtreap可以在线. fhqtreap上维护以i结尾的最长上升子序列,数字按从小到大加入, 因为前面的数与新加入的数无关, 后面的数比新加入的数小, 所以新加入的数对原序列其他数的值没有影 ...
- Codeforces Round #410 (Div. 2)A B C D 暴力 暴力 思路 姿势/随机
A. Mike and palindrome time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- navicat for mysql 导出数据的坑
navicat 选择转储结构和数据的时候,生成的 sql 文件会比较大,因为每一条数据都会生成一条 sql 语句,所以会导致 使用 source 还原的时候会很慢很慢很慢, 而使用 mysqldump ...
- bzoj 2530 [Poi2011]Party 构造
2530: [Poi2011]Party Time Limit: 10 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 364 Solved: ...
- Python基础之文件处理、函数、内置函数 (三)
内置函数 一 详细见python文档,请点击 文件操作 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 文件句柄 = file('文件路径', '模式') 注:python中打开 ...
- ios 虚拟机中文件下载路径
每个人mac上的路径会有不同,你可以打印出你文件下载存放的路径,然后拷贝一下,再单击桌面空白处,最上面的导航栏上有个“前往”,然后找到“前往文件夹”,粘贴一下,就可以找到了.
- Asp.Net MVC 自定义登录过滤器
1.新建类BaseController用于统一所有控制器继承扩展,方便扩展登录等过滤器.示例如下: using CloudWave.JustBeHere.JBH_H5.Controllers.Attr ...
- MySQL异常总结
1.Packets larger than max_allowed_packet are not allowed MySQL的一个系统参数:max_allowed_packet,其默认值为104857 ...
- CALayer---iOS-Apple苹果官方文档翻译之CALayer
CHENYILONG Blog CALayer---iOS-Apple苹果官方文档翻译之CALayer CALayer /*技术博客http://www.cnblogs.com/ChenYilong/ ...