问答项目---用户注册的那些事儿(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 演示地址 演示地址 预览截图(抬抬你的鼠标就可以看到 ...
随机推荐
- 命令行启动kettle
kettle命令启动: http://download.csdn.net/detail/ludaxin6/9519418 kettle命令启动参数: http://blog.csdn.net/glei ...
- Openfire配置过程,以及与php交互注意事项。
Ben Werdmuller 是一位 Web 策划师和开发人员,他专注于开放源码平台.他是开源社交网络框架 Elgg 的共同创始人和技术带头人.Ben 的博客 http://benwerd.com/. ...
- 全局结果集,带参数的结果集和动态结果集(struts2)
全局结果集: 当许多action都有共同的结果时,如果每个package都存在一个相同结果,会使得struts.xml比较臃肿,所以使用全局的结果集.一个包内的全局结果集可以通过包的继承而被其它包使用 ...
- (转)非阻塞Connect对于select时应注意问题
对于面向连接的socket类型(SOCK_STREAM,SOCK_SEQPACKET)在读写数据之前必须建立连接,首先服务器端socket必须在一个客户端知道的地址进行监听,也就是创建socket之后 ...
- CentOS显示设置时间命令- date
概要: date命令的功能是显示和设置系统日期和时间 命令格式: date [OPTION]... [+FORMAT]date [-u|--utc|--universal] [MMDDhhmm[[CC ...
- asp.net mvc中加入log4net记录错误日志
直接上代码示例:https://share.weiyun.com/aff36f2547514cfefe129ebb8ccb28ef 首先添加加log4net的dll,推荐用nuget.... 贴上配置 ...
- 【Java面试题】48 GC是什么? 为什么要有GC?
GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过 ...
- 关于Unity 获得和使用GetComponent<MeshFilter>().mesh时的心得
原文地址:http://blog.sina.com.cn/s/blog_7d9405e50100s061.html 今天在使用Unity3D的时候遇到了一个问题:_tesGameObject是在Pro ...
- java web接口controller测试控制台输出乱码
接口上配置:
- android 沉浸式状态栏(像ios那样的状态栏与应用统一颜色样式)
这个特性是andorid4.4支持的,最少要api19才干够使用.以下介绍一下使用的方法,很得简单: 添加一个demo源代码: https://github.com/ws123/StatusDemo ...