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

简单注册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. Linux如何通过命令查看日志文件的某几行(中间几行或最后几行)

    linux 如何显示一个文件的某几行(中间几行) [一]从第3000行开始,显示1000行.即显示3000~3999行 cat filename | tail -n +3000 | head -n 1 ...

  2. phpstudy+php5.2+mssql2008

    我勒个去.... <?php $server ="XEJMZWMDIXE9CIJ"; //服务器IP地址,如果是本地,可以写成localhost $uid ="&q ...

  3. 第二百九十五节,python操作redis缓存-字符串类型

    python操作redis缓存-字符串类型 首先要安装redis-py模块 python连接redis方式,有两种连接方式,一种是直接连接,一张是通过连接池连接 注意:以后我们都用的连接池方式连接,直 ...

  4. 在jsp中,page指令的()属性用来引入需要的包或类。

    在jsp中,page指令的()属性用来引入需要的包或类. A.extends B.import C.language D.contentType 解答:B

  5. Surfer 高并发双核无头浏览器 (Golang语言)

    Surfer   A high level concurrency downloader. surfer是一款Go语言编写的高并发爬虫下载器,拥有surf与phantom两种下载内核. 支持固定Use ...

  6. Android ContentProvider、ContentResolver和ContentObserver的使用

    1.ContentProvider.ContentResolver和ContentObserver ContentProvider是Android的四大组件之中的一个,可见它在Android中的作用非 ...

  7. supervisorctl unix:///var/run/supervisor.sock refused connection

    运行supervisorct 报如下错误 supervisorctl unix:///var/run/supervisor.sock refused connection 查看supervisord. ...

  8. 编译ros程序包--4

    编译程序包(原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/) 1.编译程序包: 一旦安装了所需的系统依赖项,我们就可以开始编译刚才创建的程序包了 ...

  9. 【VR】Leap Motion 官网文档 FingerModel (手指模型)

    前言: 感谢关注和支持这个Leap Motion系列翻译的朋友们,非常抱歉因为工作原因非常久没有更新,今后这个翻译还会继续(除非官方直接给出中文文档).本篇献给大家的是 <FingerModel ...

  10. windows平台的游戏运行库

    每一个都在PC上玩过游戏的人,都知道要安装一些必备的游戏运行库,游戏才能运行,这里指的PC是特指Windows操作系统平台.一般来说最常见的运行库是DirectX.Microsoft Visual C ...