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 验证码注册登录的更多相关文章

  1. Angular之简单的登录注册

    使用Angular实现了一个简单的登录注册的功能........ 涉及到的Angular知识点很少 主要是这个功能的实现...(*^__^*) 嘻嘻…… 里面涉及到的知识点记录: 1.本地存储的操作 ...

  2. Node.js基于Express框架搭建一个简单的注册登录Web功能

    这个小应用使用到了node.js  bootstrap  express  以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注 ...

  3. 原生js验证简洁美观注册登录页面

    序 一个以js验证表单的简洁的注册登录页面,不多说直接上图 效果 主要文件 完整代码 sign_up.html 注册表单 <!DOCTYPE html> <html lang=&qu ...

  4. Node.js原生及Express方法实现注册登录原理

    由于本文只是实现其原理,所以没有使用数据库,只是在js里面模拟数据库,当然是种中还是需要用数据库的. 1.node.js原生方法 ①html页面,非常简单,没有一丝美化~我们叫它user.html & ...

  5. node.js 初学(二)—— 搭建注册/登录服务器

    node.js 初学(二)—— 搭建注册/登录服务器 理论上来说,代码实现在理论和实际上是一样的.但实际上来说,他们不是 做一个最简单的用户注册登录功能 1.接口定义: 注册:/user?act=re ...

  6. Angular JS 中的服务注册方法

    在Angular JS中创建服务的几种方法 factory() service() constant() value() provider() factory(name,fn(){}) 该服务为单例的 ...

  7. 一步步开发自己的博客 .NET版(3、注册登录功能)

    前言 这次开发的博客主要功能或特点:    第一:可以兼容各终端,特别是手机端.    第二:到时会用到大量html5,炫啊.    第三:导入博客园的精华文章,并做分类.(不要封我)    第四:做 ...

  8. 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 的目的是 ...

  9. 8、ABPZero系列教程之拼多多卖家工具 添加手机注册登录功能

    现在网站基本都用手机注册,很少用邮箱注册,本篇内容比较多,代码我会尽量加备注,有些操作需要连续添加几个文件才不报错,如果VS显示错误,请继续后续步骤. 前面已经有一篇文章讲到集成短信发送模块:http ...

随机推荐

  1. Zookeeper(三) Zookeeper原理与应用

    一.zookeeper原理解析 1.进群角色描述 2.Paxos 算法概述( ZAB 协议)    分布式一致性算法 3.Zookeeper 的选主(恢复模式) 以一个简单的例子来说明整个选举的过程. ...

  2. bzoj3173: [Tjoi2013]最长上升子序列(fhqtreap)

    这题用fhqtreap可以在线. fhqtreap上维护以i结尾的最长上升子序列,数字按从小到大加入, 因为前面的数与新加入的数无关, 后面的数比新加入的数小, 所以新加入的数对原序列其他数的值没有影 ...

  3. 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 ...

  4. navicat for mysql 导出数据的坑

    navicat 选择转储结构和数据的时候,生成的 sql 文件会比较大,因为每一条数据都会生成一条 sql 语句,所以会导致 使用 source 还原的时候会很慢很慢很慢, 而使用 mysqldump ...

  5. bzoj 2530 [Poi2011]Party 构造

    2530: [Poi2011]Party Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 364  Solved:  ...

  6. Python基础之文件处理、函数、内置函数 (三)

    内置函数 一 详细见python文档,请点击 文件操作 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 文件句柄 = file('文件路径', '模式') 注:python中打开 ...

  7. ios 虚拟机中文件下载路径

    每个人mac上的路径会有不同,你可以打印出你文件下载存放的路径,然后拷贝一下,再单击桌面空白处,最上面的导航栏上有个“前往”,然后找到“前往文件夹”,粘贴一下,就可以找到了.

  8. Asp.Net MVC 自定义登录过滤器

    1.新建类BaseController用于统一所有控制器继承扩展,方便扩展登录等过滤器.示例如下: using CloudWave.JustBeHere.JBH_H5.Controllers.Attr ...

  9. MySQL异常总结

    1.Packets larger than max_allowed_packet are not allowed MySQL的一个系统参数:max_allowed_packet,其默认值为104857 ...

  10. CALayer---iOS-Apple苹果官方文档翻译之CALayer

    CHENYILONG Blog CALayer---iOS-Apple苹果官方文档翻译之CALayer CALayer /*技术博客http://www.cnblogs.com/ChenYilong/ ...