问答项目---用户注册的那些事儿(JS验证)
做注册的时候,由于每一个页面都有都要可以注册,可以把注册方法写到一个公用的方法里去,其他方法继承这个方法:
简单注册JS示例:
<script type='text/javascript'>
var CONTROL = '__URL__';
</script>
JS示例:
var validate = {
account : false,
username : false,
pwd : false,
pwded : false,
verify : false,
loginAccount : false,
loginPwd : false
};
var msg = '';
$(function () {
$( '#verify-img' ).click( function () {
$( this ).attr('src', CONTROL + 'verify/' + Math.random());
} );
var register = $( 'form[name=register]' );
register.submit( function () {
var isOK = validate.account && validate.username && validate.pwd && validate.pwded && verify;
if ( isOK ) {
return true;
}
$( 'input[name=account]', register ).trigger('blur');
$( 'input[name=username]', register ).trigger('blur');
$( 'input[name=pwd]', register ).trigger('blur');
$( 'input[name=pwded]', register ).trigger('blur');
$( 'input[name=verify]', register ).trigger('blur');
return false;
} );
//验证帐号
$( 'input[name=account]', register ).blur( function () {
var account = $( this ).val();
var span = $( this ).next();
if ( account == '' ) {
msg = '帐号不能为空';
span.html( msg ).addClass('error');
validate.account = false;
return;
}
if ( !/^[a-zA-Z]\w{6,19}$/g.test(account) ) {
msg = '帐号以字母开头7-20位的字母,数字,下划线';
span.html( msg ).addClass('error');
validate.account = false;
return;
}
$.post(CONTROL + 'checkAccount', {account : account}, function (status) {
if (status) {
msg = '';
span.html( msg ).removeClass('error');
validate.account = true;
} else {
msg = '帐号已存在';
span.html( msg ).addClass('error');
validate.account = false;
}
}, 'json');
} );
//验证用户名
$( 'input[name=username]', register ).blur( function () {
var username = $( this ).val();
var span = $( this ).next();
if ( username == '' ) {
msg = '用户名不能为空';
span.html( msg ).addClass('error');
validate.username = false;
return;
}
if ( !/^[\u4e00-\u9fa5|\w]{2,14}$/g.test(username) ) {
msg = '必须是2-14个字符:字母,数字,下划线或中文';
span.html( msg ).addClass('error');
validate.username = false;
return;
}
$.post(CONTROL + 'checkUsername', {username : username}, function (status) {
if (status) {
msg = '';
span.html( msg ).removeClass('error');
validate.username = true;
} else {
msg = '用户名已存在';
span.html( msg ).addClass('error');
validate.username = false;
}
}, 'json');
} );
//验证密码
$( 'input[name=pwd]', register ).blur( function () {
var pwd = $( this ).val();
var span = $( this ).next();
if ( pwd == '' ) {
msg = '密码不能为空';
span.html( msg ).addClass('error');
validate.pwd = false;
return;
}
if ( !/^\w{6,20}$/g.test(pwd) ) {
msg = '密码必须由6-20个字母,数字,下划线组成';
span.html( msg ).addClass('error');
validate.pwd = false;
return;
}
msg = '';
validate.pwd = true;
span.html( msg ).removeClass('error');
} );
//确认密码
$( 'input[name=pwded]', register ).blur( function () {
var pwded = $( this ).val();
var span = $( this ).next();
if ( pwded == '' ) {
msg = '请确认密码';
span.html( msg ).addClass('error');
validate.pwded = false;
return;
}
if ( pwded != $( 'input[name=pwd]', register ).val() ) {
msg = '两次密码不一致';
span.html( msg ).addClass('error');
validate.pwded = false;
return;
}
msg = '';
span.html( msg ).removeClass('error');
validate.pwded = true;
} );
//验证码
$( 'input[name=verify]', register ).blur( function () {
var verify = $( this ).val();
var span = $( this ).next().next();
if ( verify == '' ) {
msg = '请输入验证码';
span.html( msg ).addClass('error');
validate.verify = false;
return;
}
$.post(CONTROL + 'checkVerify', {verify : verify}, function (status) {
if (status) {
msg = '';
span.html( msg ).removeClass('error');
validate.verify = true;
} else {
msg = '验证码错误';
span.html( msg ).addClass('error');
validate.verify = false;
}
}, 'json');
} );
var login = $( 'form[name=login]' );
login.submit( function () {
if (validate.loginAccount && validate.loginPwd) {
return true;
}
$( 'input[name=account]', login ).trigger('blur');
$( 'input[name=pwd]', login ).trigger('blur');
return false;
} );
$( 'input[name=account]', login ).blur( function () {
var account = $( this ).val();
var span = $( '#login-msg' );
if (account == '') {
span.html( '请填入帐号' );
validate.loginAccount = false;
return;
}
} );
$( 'input[name=pwd]', login ).blur( function () {
var account = $( 'input[name=account]', login ).val();
var pwd = $( this ).val();
var span = $( '#login-msg' );
if (pwd == '') {
span.html( '请填写密码' );
validate.loginPwd = false;
return;
}
if (account == '') {
span.html( '请填入帐号' );
validate.loginAccount = false;
return;
}
var data = {
account : account,
password : pwd
};
$.post(CONTROL + 'checkLogin', data, function (status) {
if (status) {
span.html( '' );
validate.loginAccount = true;
validate.loginPwd = true;
} else {
span.html( '帐号或密码不正确' );
validate.loginAccount = false;
validate.loginPwd = false;
}
}, 'json');
} );
});
异步验证账号/用户名/密码:
//异步验证帐号
Public function checkAccount () {
if (!$this->isAjax()) halt('页面不存在');
$account = $this->_post('account');
$where = array('account' => $account);
if (M('user')->where($where)->getField('id')) {
echo 0;
} else {
echo 1;
}
} //异步验证用户名
Public function checkUsername () {
if (!$this->isAjax()) halt('页面不存在');
$username = $this->_post('username');
$where = array('username' => $username);
if (M('user')->where($where)->getField('id')) {
echo 0;
} else {
echo 1;
}
} //异步验证验证码
Public function checkVerify () {
if (!$this->isAjax()) halt('页面不存在'); if ($_SESSION['verify'] == $this->_post('verify', 'md5')) {
echo 1;
} else {
echo 0;
}
} //验证码
Public function verify () {
import('ORG.Util.Image');
Image::buildImageVerify();
}
问答项目---用户注册的那些事儿(JS验证)的更多相关文章
- 问答项目---用户注册的那些事儿(PHP验证)
JS 验证之后,还需要通过PHP验证: 提交过来的名称不一样,可以用字段映射: 在自动验证的时候,如果这个字段被映射,那么自动验证的时候,自动验证的就是 映射过后的字段: 控制器示例: //注册表单处 ...
- 【转】去除eclipse的JS验证
第一步:去除eclipse的JS验证:将windows->preference->Java Script->Validator->Errors/Warnings->Ena ...
- 九月二十八JS验证
js表单验证 js可用发来在数据被送往服务器前对HTML表单中的这些输入数据进行验证 被js验证的这些典型的表单数据有: >用户是否已填写表单中的必填项目: >用户输入的邮件地址是否是合法 ...
- SpringMVC学习系列-后记 结合SpringMVC和Hibernate-validator,根据后台验证规则自动生成前台的js验证代码
在SpringMVC学习系列(6) 之 数据验证中我们已经学习了如何结合Hibernate-validator进行后台的数据合法性验证,但是通常来说后台验证只是第二道保险,为了更好的用户体验会现在前端 ...
- js验证真实姓名与身份证号,手机号
最近的项目中用的需要调用实名认证的接口,实名认证接口价格相比短信而言高了不是几分钱,所以说调用实名认证的条件就要严格把关,因此用到js验证真实姓名与js验证身份证号. 进入正题 1.js验证真实姓名 ...
- node的passport.js验证
项目使用的是passport.js(http://passportjs.org/docs),所以对passport这个中间件研究了一番,在本项目中passport同express-session配合使 ...
- 去掉eclipse的xml和js验证
一.XML Properties > Validation you have two options: 1- Configure Workspace Settings (disable the ...
- Eclipse编写ExtJS卡死问题 eclise js验证取消
1. Eclipse编写ExtJS卡死问题 eclise js验证取消 近期项目用到了extjs,发现项目编译的时候特别的卡,浪费很多时间而且保存的时候还要编译,因此打算看下如何取消验证extjs.最 ...
- 自制“低奢内”CSS3注册表单,包含JS验证哦。请别嫌弃,好吗?。
要求 必备知识 基本了解CSS语法,初步了解CSS3语法知识.和JS/JQuery基本语法. 开发环境 Adobe Dreamweaver CS6 演示地址 演示地址 预览截图(抬抬你的鼠标就可以看到 ...
随机推荐
- Linux如何通过命令查看日志文件的某几行(中间几行或最后几行)
linux 如何显示一个文件的某几行(中间几行) [一]从第3000行开始,显示1000行.即显示3000~3999行 cat filename | tail -n +3000 | head -n 1 ...
- phpstudy+php5.2+mssql2008
我勒个去.... <?php $server ="XEJMZWMDIXE9CIJ"; //服务器IP地址,如果是本地,可以写成localhost $uid ="&q ...
- 第二百九十五节,python操作redis缓存-字符串类型
python操作redis缓存-字符串类型 首先要安装redis-py模块 python连接redis方式,有两种连接方式,一种是直接连接,一张是通过连接池连接 注意:以后我们都用的连接池方式连接,直 ...
- 在jsp中,page指令的()属性用来引入需要的包或类。
在jsp中,page指令的()属性用来引入需要的包或类. A.extends B.import C.language D.contentType 解答:B
- Surfer 高并发双核无头浏览器 (Golang语言)
Surfer A high level concurrency downloader. surfer是一款Go语言编写的高并发爬虫下载器,拥有surf与phantom两种下载内核. 支持固定Use ...
- Android ContentProvider、ContentResolver和ContentObserver的使用
1.ContentProvider.ContentResolver和ContentObserver ContentProvider是Android的四大组件之中的一个,可见它在Android中的作用非 ...
- supervisorctl unix:///var/run/supervisor.sock refused connection
运行supervisorct 报如下错误 supervisorctl unix:///var/run/supervisor.sock refused connection 查看supervisord. ...
- 编译ros程序包--4
编译程序包(原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/) 1.编译程序包: 一旦安装了所需的系统依赖项,我们就可以开始编译刚才创建的程序包了 ...
- 【VR】Leap Motion 官网文档 FingerModel (手指模型)
前言: 感谢关注和支持这个Leap Motion系列翻译的朋友们,非常抱歉因为工作原因非常久没有更新,今后这个翻译还会继续(除非官方直接给出中文文档).本篇献给大家的是 <FingerModel ...
- windows平台的游戏运行库
每一个都在PC上玩过游戏的人,都知道要安装一些必备的游戏运行库,游戏才能运行,这里指的PC是特指Windows操作系统平台.一般来说最常见的运行库是DirectX.Microsoft Visual C ...