做注册的时候,由于每一个页面都有都要可以注册,可以把注册方法写到一个公用的方法里去,其他方法继承这个方法:

简单注册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验证)的更多相关文章

  1. 问答项目---用户注册的那些事儿(PHP验证)

    JS 验证之后,还需要通过PHP验证: 提交过来的名称不一样,可以用字段映射: 在自动验证的时候,如果这个字段被映射,那么自动验证的时候,自动验证的就是 映射过后的字段: 控制器示例: //注册表单处 ...

  2. 【转】去除eclipse的JS验证

    第一步:去除eclipse的JS验证:将windows->preference->Java Script->Validator->Errors/Warnings->Ena ...

  3. 九月二十八JS验证

    js表单验证 js可用发来在数据被送往服务器前对HTML表单中的这些输入数据进行验证 被js验证的这些典型的表单数据有: >用户是否已填写表单中的必填项目: >用户输入的邮件地址是否是合法 ...

  4. SpringMVC学习系列-后记 结合SpringMVC和Hibernate-validator,根据后台验证规则自动生成前台的js验证代码

    在SpringMVC学习系列(6) 之 数据验证中我们已经学习了如何结合Hibernate-validator进行后台的数据合法性验证,但是通常来说后台验证只是第二道保险,为了更好的用户体验会现在前端 ...

  5. js验证真实姓名与身份证号,手机号

    最近的项目中用的需要调用实名认证的接口,实名认证接口价格相比短信而言高了不是几分钱,所以说调用实名认证的条件就要严格把关,因此用到js验证真实姓名与js验证身份证号. 进入正题 1.js验证真实姓名 ...

  6. node的passport.js验证

    项目使用的是passport.js(http://passportjs.org/docs),所以对passport这个中间件研究了一番,在本项目中passport同express-session配合使 ...

  7. 去掉eclipse的xml和js验证

    一.XML Properties > Validation you have two options: 1- Configure Workspace Settings (disable the ...

  8. Eclipse编写ExtJS卡死问题 eclise js验证取消

    1. Eclipse编写ExtJS卡死问题 eclise js验证取消 近期项目用到了extjs,发现项目编译的时候特别的卡,浪费很多时间而且保存的时候还要编译,因此打算看下如何取消验证extjs.最 ...

  9. 自制“低奢内”CSS3注册表单,包含JS验证哦。请别嫌弃,好吗?。

    要求 必备知识 基本了解CSS语法,初步了解CSS3语法知识.和JS/JQuery基本语法. 开发环境 Adobe Dreamweaver CS6 演示地址 演示地址 预览截图(抬抬你的鼠标就可以看到 ...

随机推荐

  1. 关于Cocos2d-x中物理世界的物体乱跳的问题的解决

    这是电脑短时间内帧率低,无法满足游戏配置的帧率引起的. 解决方法: 第一种: 1.打开AppDelegate.cpp文件 2.把director->setAnimationInterval(1. ...

  2. php -- 静态变量

    一般的函数内变量在函数结束后会释放,比如局部变量,但是静态变量却不会.下次再调用这个函数的时候,该变量的值会保留下来. 静态的变量的基本用法 1. 在类中定义静态变量 [访问修饰符] static $ ...

  3. endl的读法

    endl是“end line”的缩写,所以它应该念作“endELL”而不是“endONE”.

  4. 前台的js对象数组传到后台处理。在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>

    前台的js对象数组传到后台处理.在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>

  5. Mysql中Innodb大量插入数据时SQL语句的优化

    innodb优化后,29小时入库1300万条数据 参考:http://blog.51yip.com/mysql/1369.html 对于Myisam类型的表,可以通过以下方式快速的导入大量的数据: A ...

  6. openstack中nova组件Hypervisors、Floating_ips的全部python API 汇总

    感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限.错误之处在所难免,欢迎指正! 假设转载.请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...

  7. 【Mongo】聚合函数

    http://blog.csdn.net/miyatang/article/details/20997313 SQL Terms, Functions, and Concepts MongoDB Ag ...

  8. HDFS特点

  9. Mockito单元测试框架学习

    基本使用方法: http://zhongl.iteye.com/blog/296136 一.问题:如何将mock的类自动注入到待测类,特别是在没有setter方法的情况下. 解答: 前提:待测的ser ...

  10. NHibernate实例

    1. 下载相关资源: 下载NHibernate.下载地址: http://nhforge.org/Default.aspx 下载微软Northwind示例数据库,下载地址:http://www.mic ...