passport.js

时间:2023-03-10 02:30:29
passport.js
$(function(){

    function isPlaceholder(){
var input = document.createElement('input');
return 'placeholder' in input;
}
if(!isPlaceholder()){
$("input").not("input[type='password']").each(//把input绑定事件 排除password框
function(){
if($(this).val()=="" && $(this).attr("placeholder")!=""){
$(this).val($(this).attr("placeholder"));
$(this).focus(function(){
if($(this).val()==$(this).attr("placeholder")) $(this).val("");
});
$(this).blur(function(){
if($(this).val()=="") $(this).val($(this).attr("placeholder"));
});
}
});
//对password框的特殊处理1.创建一个text框 2获取焦点和失去焦点的时候切换
function removeInput(ele){
var ele = $('.'+ele);
var pwdField = ele.find("input[type=password]");
var pwdVal = pwdField.attr('placeholder');
pwdField.after('<input class="input pwdPlaceholder" type="text" value='+pwdVal+' autocomplete="off" />');
var pwdPlaceholder = ele.find('.pwdPlaceholder');
pwdPlaceholder.show();
pwdField.hide(); pwdPlaceholder.focus(function(){
pwdPlaceholder.hide();
pwdField.show();
pwdField.focus();
}); pwdField.blur(function(){
if(pwdField.val() == '') {
pwdPlaceholder.show();
pwdField.hide();
}
});
}
removeInput('loginBox');
removeInput('registerBox');
} $.getScript('http://static.m1905.cn/passport/js/emailsuggest.js',function(){
var arr = [ '163.com',
'126.com',
'qq.com',
'yahoo.com.cn',
'gmail.com',
'sohu.com',
'hotmail.com' ,
'sina.com'
];
new $.ui.EmailSuggest( '#mail_reg', {
data : arr
});
new $.ui.EmailSuggest( '#mail_sug', {
data : arr
});
}) var validateAPI = 'http://passport.1905.com/v2/api/',
passBoxTag = $('<span class="msg-box"><i class="icons pass"><em class="arr"></em></i></span>'),
failBoxTag = $('.registerBox .error');
var InterValObj; //timer变量,控制时间
var count = ; //间隔函数,1秒执行
var curCount;//当前剩余秒数 $.register = {};
$.register = { rEmail : /^\w+((\.\w+)|(-\w+))*\@[a-zA-Z0-]+((\.|-)[a-zA-Z0-]+)*\.[a-zA-Z0-]+$/,
rPhone : /^(^[|]\d{}$)|(^[]\d{}$)|(^[]\d{}$)$/,
rUsername : /^[\.a-zA-Z0-9_-]{,}$/,
rsmscode : /\d{}/,
trim : /\s*/,
rPassword : {
digital: /\d+/,
lowercase: /[a-z]+/,
uppercase: /[A-Z]+/,
symbols: /[_!@#\$%\^&\*\(\)\\\|\/\?\.\<\>'"\{\}\[\]=\-\~\,\;\:]+/,
password: /^[a-zA-Z0-9_!@#\$%\^&\*\(\)\\\|\/\?\.\<\>'"\{\}\[\]=\-\~\,\;\:\s]+$/,
mobile_verify: /^\d$/
},
checkEmailorPhone : function (){ //验证邮箱手机号
var flag = "";
$('.registerBox .error').html("");
$('.registerBox .emailormobile').next('.msg-box').remove();
if($('.ecope_emailsuggest li.current').length > ){
EmailorPhoneValue = $('.ecope_emailsuggest li.current').text();
$('.registerBox .emailormobile').val(EmailorPhoneValue);
$('.ecope_emailsuggest li.current').removeClass('current');
}else{
EmailorPhoneValue = $('.registerBox .emailormobile').val();
}
$('.registerBox .emailormobile').removeAttr('data-type');
if(!$.register.rEmail.test(EmailorPhoneValue) && !$.register.rPhone.test(EmailorPhoneValue)){
if(/\s+/.test(EmailorPhoneValue)){
failBoxTag.html('<em class="icons fail"></em>输入框存在空格,请您重新输入');
}else{
failBoxTag.html('<em class="icons fail"></em>请输入正确的手机号或邮箱');
flag = ;
}
}else if($.register.rPhone.test(EmailorPhoneValue)){
$.ajax({
url:validateAPI,
data : {m : 'user',a : 'checkEmailOrmobile' , format : 'json',emailormobile : EmailorPhoneValue},
dataType: 'jsonp',
jsonpCallback : 'callback',
async:false,
success:function(data){
if(data.status == ){
failBoxTag.html('<em class="icons fail"></em>手机号已经被注册,可<a href="javascript:void(0)" class="quick-login">直接登录</a>');
$('.registerBox .password').unbind('blur');
$('.registerBox .registerCode').unbind('blur');
}else{
$('.registerBox .emailormobile').siblings('.msg-box').remove();
passBoxTag.appendTo($('.emailormobile').parent('fieldset'));
$('.ecope_emailsuggest').hide();
$('.registerBox .emailormobile').attr('data-type',true);
$('#smsCode').slideDown();
}
}
});
}else if($.register.rEmail.test(EmailorPhoneValue)){
$('#smsCode').slideUp();
$.ajax({
url:validateAPI,
data : {m : 'user',a : 'checkEmailOrmobile' , format : 'json',emailormobile : EmailorPhoneValue},
dataType: 'jsonp',
jsonpCallback : 'callback',
async:false,
success:function(data){
if(data.status == ){
failBoxTag.html('<em class="icons fail"></em>邮箱已经被注册,可<a href="javascript:void(0)" class="quick-login">直接登录</a>');
$('.registerBox .password').unbind('blur');
$('.registerBox .registerCode').unbind('blur');
}else{
$('.registerBox .emailormobile').siblings('.msg-box').remove();
passBoxTag.appendTo($('.emailormobile').parent('fieldset'));
$('.ecope_emailsuggest').hide();
$('.registerBox .emailormobile').attr('data-type',true);
mobilecodeValue = $('.registerBox .mobilecode').val() == '';
}
}
});
}
},
checkPassword : function(){ //验证密码
$('.emailormobile').trigger('blur');
failBoxTag.html("");
passwordValue = $('.registerBox .password').val();
$('.registerBox .password').removeAttr('data-type');
if(passwordValue.length == ){
failBoxTag.html('<em class="icons fail"></em>密码不能为空');
}else if(passwordValue.length < ){
$(".registerBox .password").trigger('keyup');
$('.registerBox .password').next('.msg-box').remove();
failBoxTag.html('<em class="icons fail"></em>输入密码至少6位');
}else if(passwordValue.length > ){
failBoxTag.html('<em class="icons fail"></em>密码不能超过16位');
}else if(/\s+/.test(passwordValue)){
failBoxTag.html('<em class="icons fail"></em>输入框存在空格,请您重新输入');
$('.registerBox .password').next('.msg-box').remove();
}else{
$('.registerBox .password').attr('data-type',true);
}
},
checkPassWord_strong : function(){ //检测密码强度
passwordValue = $('.registerBox .password').val();
var value = $.trim(passwordValue), b = , msg ="";
switch ($.register.rPassword.digital.test(value) && b++, $.register.rPassword.lowercase.test(value) && b++, $.register.rPassword.uppercase.test(value) && b++, $.register.rPassword.symbols.test(value) && b++, b) {
case :
msg = '<i class="icons safe week"> 弱 </i>';
break;
case :
msg = '<i class="icons safe normal"> 中 </i>';
break;
case :
msg = '<i class="icons safe strong"> 强 </i>';
break;
}
$('.registerBox .password').siblings('.msg-box').remove();
$('<span class="msg-box">'+ msg +'</span>').appendTo($('.registerBox .password').parent('fieldset'));
return '';
},
changeverify : function(imgID){ //刷新图片验证码
var url = 'http://passport.1905.com/v2/api/?m=seccodech&a=display&rand=';
$('#'+imgID).attr('src', url + new Date().getTime());
},
checkSecCode : function(ele){ //图片验证码
$('.emailormobile').trigger('blur');
$('.'+ele).find('.error').html("");
$('.'+ele).find('.vcode').next('.msg-box').remove();
secCodeValue = $('.'+ele).find('.vcode').val();
$('.'+ele).find('.vcode').removeAttr('data-type');
$.ajax({
url:validateAPI,
data : {m : 'user',a : 'checkseccode' , format : 'json',seccode : secCodeValue},
dataType: 'jsonp',
jsonpCallback : 'callback',
success:function(data){
if(data.status == ){
$('.'+ele).find('.vcode').siblings('.msg-box').remove();
$('<span class="msg-box"><i class="icons pass"><em class="arr"></em></i></span>').appendTo($('.'+ele).find('.vcode').parent('fieldset'));
$('.registerBox .vcode').attr('data-type',true);
}else{
$('.'+ele).find('.vcode').siblings('.msg-box').remove();
$('.'+ele).find('.error').html('<em class="icons fail"></em>验证码错误');
}
}
})
},
SetRemainTime : function() {
if (curCount == ) {
window.clearInterval(InterValObj);
$("#issuedSMS").removeAttr("disabled");
$("#issuedSMS").val("重新发送验证码");
code = "";
}
else {
curCount--;
$("#issuedSMS").val(curCount + "秒后重新发送");
}
},
getmobileCode : function() {
curCount = count;
if(EmailorPhoneValue != "" && $.register.rPhone.test(EmailorPhoneValue)){
$("#issuedSMS").attr("disabled", "true");
$("#issuedSMS").val(curCount + "秒后重新发送");
InterValObj = window.setInterval($.register.SetRemainTime, ); //启动计时器,1秒执行一次
$.ajax({
url:validateAPI,
data : {m : 'acode',a : 'sendmobile' , mobile : EmailorPhoneValue},
dataType: 'jsonp',
success:function(data){
if(data.status == ){
alert('短信已发送'+data.info);
}else{
alert(data.info);
}
}
})
}else{
failBoxTag.html('<em class="icons fail"></em>手机号码不能为空');
$('.emailormobile').trigger('focus');
}
},
checkSmsCode : function(){//短信验证码
failBoxTag.html("");
$('.registerBox .mobilecode').next('.msg-box').remove();
mobilecodeValue = $('.registerBox .mobilecode').val();
$('.registerBox .mobilecode').removeAttr('data-type');
if(mobilecodeValue.length == ){
failBoxTag.html('<em class="icons fail"></em>手机验证码不能为空');
return false;
}else{
$.ajax({
url:validateAPI,
data : {m : 'acode',a : 'check' , mobile : EmailorPhoneValue, acode : mobilecodeValue},
dataType: 'jsonp',
success:function(data){
if(data.status == ){
$('.registerBox .mobilecode').siblings('.msg-box').remove();
passBoxTag.appendTo($('.mobilecode').parent('fieldset'));
$('.registerBox .mobilecode').attr('data-type',true);
}else{
failBoxTag.html('<em class="icons fail"></em>手机验证码错误');
}
}
})
}
},
checkAgreement : function (){//同意协议
failBoxTag.html("");
if (!$('.agree').is(":checked")) {
$('.registerBox .agree').removeAttr('data-type');
failBoxTag.html('<em class="icons fail"></em>同意后才能注册');
}else{
$('.registerBox .agree').attr('data-type',true);
}
}
}//register end $(document).on('click','.quick-login, .mar-login a', function(){
$('.tag li').eq().addClass('active').siblings('li').removeClass('active');
$('.loginBox').addClass('active').siblings('.registerBox').removeClass('active');
}).on('click','#img_reg_code', function(){
$.register.changeverify('img_reg_code');
}).on('click','#img_login_code', function(){
$.register.changeverify('img_login_code');
}).on('click','.tag li', function(){
var nIndex = $(this).index();
$(this).addClass('active').siblings('li').removeClass('active');
$('.passContent').eq(nIndex).addClass('active').siblings().removeClass('active').find('input').empty();
$('.nav-header').eq(nIndex).addClass('active').siblings('.nav-header').removeClass('active');
}).on('click','#issuedSMS',function(){
$.register.getmobileCode();
}).on('keydown','.password',function(event){
if ((event.ctrlKey&&event.which==) || (event.ctrlKey&&event.which==)) {
return false;
}
}).on('keydown','.loginBox .input',function(event){
if(event.keyCode == ){
$('.loginBox .submit').trigger('click');
}
}).on('keydown','.registerBox .input',function(event){
if(event.keyCode == ){
$('.registerBox .submit').trigger('click');
}
}); $(".registerBox .emailormobile").blur(function(){
// var text = $(this).val().toLowerCase();
// $(this).val(text);
$.register.checkEmailorPhone();
});
$(".registerBox .password").keyup(function(){$.register.checkPassWord_strong();})
$(".registerBox .password").blur(function(){$.register.checkPassword();})
$(".registerBox .vcode").blur(function(){$.register.checkSecCode('registerBox');})
$(".registerBox .mobilecode").blur(function(){$.register.checkSmsCode();})
$('.registerBox .agree').click(function(){ $.register.checkAgreement();})
$(".loginBox .vcode").blur(function(){$.register.checkSecCode('loginBox');}) $('.registerBox .submit').click(function(){
var flagTag =,
eleLi = $(".registerBox li.normal:visible"),
eleLilength = eleLi.length; eleLi.each(function(){
if($(this).find("input").eq().attr("data-type")){
flagTag++;
}else{
$(this).find("input").eq().trigger("blur");
return false;
}
}); if(eleLilength==flagTag){
$.ajax({
url:validateAPI,
data : {m : 'user',a : 'register_v2' , format : 'json', emailormobile : EmailorPhoneValue, acode : mobilecodeValue , password: passwordValue , seccode:secCodeValue },
dataType: 'jsonp',
jsonpCallback : 'callback',
success:function(data){
if(data.status == ){
backUrl = getRequest('callback_url') || "http://"+window.location.host;
top.location.href = backUrl;
}
}
})
}
}); $.login = {};
$.login = {
errorTimes : $('#code_error_max').val() || ,
def_vcode : '请输入验证码',
rPhone : /^(^[|]\d{}$)|(^[]\d{}$)|(^[]\d{}$)$/,
rUsername : /^[\.a-zA-Z0-9_-]{,}$/,
rEmail : /^\w+((\.\w+)|(-\w+))*\@[a-zA-Z0-]+((\.|-)[a-zA-Z0-]+)*\.[a-zA-Z0-]+$/,
err_uname : '请检查通行证格式',
err_empty : '请填写通行证',
err_upass : '请输入密码',
err_vcode : '验证码不能为空', init : function(){
// 验证码
if( $.login.errorTimes > ) {
$('.seccode').val( $.login.def_vcode );
$('.loginBox .vcode').show();
}
},
// 验证表单提交数据
checkForm : function(){
var value = $('.username').val();
var upass = $('.loginBox .password').val();
var vcode = $('#code').val();
var testVal = value.replace(/[^\x00-\xff]/g, 'mm'),
unLen = testVal.length;
if (unLen == ) {//请填写通行证
$.login.showMsg( $.login.err_empty );
return false;
}
if (!$.login.rPhone.test(testVal) && !$.login.rEmail.test(testVal) && !$.login.rUsername.test(testVal)) { // 请检查通行证格式
$.login.showMsg( $.login.err_uname );
return false;
} else if( upass.length == ) {//请输入密码
$.login.showMsg( $.login.err_upass );
return false;
} else if( $.login.errorTimes > ) {
if( vcode == '' || vcode == $.login.def_vcode ){
$.login.showMsg( $.login.err_vcode );
return false;
}
} $.login.submit( value, upass, vcode );
},
// 回调函数
loginDispose : function( data ){
if( data.synsrc ){
//同步登陆
$.ajax({
url:data.synsrc,
dataType: 'jsonp',
data: {},
success: function (data) {
backUrl = $.login.getRequest('callback_url') || window.location.href.replace(/#.*$/,"");
var str = /v2\/\?m=user\&a=login$/;
if(str.test(backUrl)){
location.href = "http://passport.1905.com";
}else{
location.href = backUrl;
}
},error:function(){
backUrl = $.login.getRequest('callback_url') || window.location.href.replace(/#.*$/,"");
location.href = backUrl;
}
});
}
},
//提交
submit : function( uname, upass , vcode){
$.login.go( uname, upass, vcode, $.login.loginDispose );
},
// showMsg
showMsg : function( msg ){
$('.loginBox .error').html('<em class="icons fail"></em>'+msg);
},
checkUsername : function(){
if($('.ecope_emailsuggest li.current').length > ){
usernameValue = $('.ecope_emailsuggest li.current').text();
$('.loginBox .username').val(usernameValue);
$('.ecope_emailsuggest li.current').removeClass('current');
}else{
usernameValue = $('.loginBox .username').val();
}
//var usernameValue = $('.loginBox .username').val();
$.ajax({
url:validateAPI,
type: "GET",
data : {m : 'user',a : 'checkoncheckEmailOrmobileOrusername',login_name : usernameValue},
dataType: "jsonp",
success: function(data) {
if(data.status == ){
$.login.showMsg('账号不存在');
$('.loginBox .username').siblings('.msg-box').remove();
return false;
}else{
$('.loginBox .error').html('');
$('.loginBox .username').parent('fieldset').append(passBoxTag);
}
}
});
},
go : function( username, password, vcode, callback ){//登陆
var url = window.location.host.split(".")[] == "passport" ? "/v2/api/?m=user&a=login" : "http://passport.m1905.com/v2/api/?m=user&a=login";
$.ajax({
url: url,
type: "GET",
data: {'username':username,'password':password,'seccode':vcode},
dataType: "jsonp",
success: function(data) {
if(data.status == ){
if(callback){
callback(data.data);
}
}else{
//抛出错误
$.login.showMsg( data.info );
//登陆错误次数超过3次则提示输入验证码
if(data.data.error_max > && $('.loginsecCode').is(':hidden')){
$('.loginsecCode').show();
}
}
}
});
},
getRequest : function(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)","i"),
r = window.location.search.substr().match(reg);
return (r!=null)? unescape(r[]) : null;
}
};
$('.loginBox .username').blur(function(){
$.login.checkUsername();
});
$('.loginBox .submit').click(function(){
$.login.checkForm();
}); function getRequest(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)","i"),
r = window.location.search.substr().match(reg);
return (r!=null)? unescape(r[]) : null;
};
var refer = document.referrer,
currentUrl = window.location.href.replace(/#.*$/,""),
backUrl = getRequest('callback_url') || currentUrl || refer || 'http://www.1905.com/',
currentUrl = window.location.hash;
$(document).on('click', '[data-login]', function() {
var p = $(this).data('login'),
url = encodeURIComponent( backUrl );
p && ( window.location = 'http://openapi.passport.m1905.com/Login/Authorize/' + p + '/?ReturnUrl=' + url )
return false;
})
})