首发于码农在线
前端日常:JavaScript验证

前端日常:JavaScript验证

冷冷的冰雨在脸上胡乱的拍~

事事难料啊,本来今天是要写写一些简单入门的教程,但在上班的路上就被一个外单给打乱了。帮忙修改一个主页500,怎么说也不能跟钱过意不去啊,小编耐不住简单的诱惑就接了。可以补一下买了工具的坑。


奈何是个坑,无止境的修改,还是一点点过来的,没办法,只能挤出时间整理了下小编日常的验证。


下面的验证是做一个商城的时候所用的,在这种写不了其他的情况下贴出这个小case补下心意。

------------请关注我@小萧ovo,一起学习、交流、分享。(有什么想了解的可以评论或私信小编喔,尽我所能。)


idcardCheck.js //身份证验证

var Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ];    // 加权因子   
var ValideCode = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ];            // 身份证验证位值.10代表X   
function IdCardValidate(idCard) { 
    idCard = trim(idCard.replace(/ /g, ""));               //去掉字符串头尾空格                     
    if (idCard.length == 15) {   
        return isValidityBrithBy15IdCard(idCard);       //进行15位身份证的验证    
    } else if (idCard.length == 18) {   
        var a_idCard = idCard.split("");                // 得到身份证数组   
        if(isValidityBrithBy18IdCard(idCard)&&isTrueValidateCodeBy18IdCard(a_idCard)){   //进行18位身份证的基本验证和第18位的验证
            return true;   
        }else {   
            return false;   
        }   
    } else {   
        return false;   
    }   
}   
/**  
 * 判断身份证号码为18位时最后的验证位是否正确  
 * @param a_idCard 身份证号码数组  
 * @return  
 */  
function isTrueValidateCodeBy18IdCard(a_idCard) {   
    var sum = 0;                             // 声明加权求和变量   
    if (a_idCard[17].toLowerCase() == 'x') {   
        a_idCard[17] = 10;                    // 将最后位为x的验证码替换为10方便后续操作   
    }   
    for ( var i = 0; i < 17; i++) {   
        sum += Wi[i] * a_idCard[i];            // 加权求和   
    }   
    valCodePosition = sum % 11;                // 得到验证码所位置   
    if (a_idCard[17] == ValideCode[valCodePosition]) {   
        return true;   
    } else {   
        return false;   
    }   
}   
/**  
  * 验证18位数身份证号码中的生日是否是有效生日  
  * @param idCard 18位书身份证字符串  
  * @return  
  */  
function isValidityBrithBy18IdCard(idCard18){   
    var year =  idCard18.substring(6,10);   
    var month = idCard18.substring(10,12);   
    var day = idCard18.substring(12,14);   
    var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));   
    // 这里用getFullYear()获取年份,避免千年虫问题   
    if(temp_date.getFullYear()!=parseFloat(year)   
          ||temp_date.getMonth()!=parseFloat(month)-1   
          ||temp_date.getDate()!=parseFloat(day)){   
            return false;   
    }else{   
        return true;   
    }   
}   
  /**  
   * 验证15位数身份证号码中的生日是否是有效生日  
   * @param idCard15 15位书身份证字符串  
   * @return  
   */  
  function isValidityBrithBy15IdCard(idCard15){   
      var year =  idCard15.substring(6,8);   
      var month = idCard15.substring(8,10);   
      var day = idCard15.substring(10,12);   
      var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));   
      // 对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法   
      if(temp_date.getYear()!=parseFloat(year)   
              ||temp_date.getMonth()!=parseFloat(month)-1   
              ||temp_date.getDate()!=parseFloat(day)){   
                return false;   
        }else{   
            return true;   
        }   
  }   
//去掉字符串头尾空格   
function trim(str) {   
    return str.replace(/(^\s*)|(\s*$)/g, "");   
}  

/**判断是否为空**/

/**判断是否为空**/
function isBlank(_value){
if(_value==null || _value=="" || _value==undefined){
return true;
   }
return false;
}

/** 验证邮箱 **/

/** 验证邮箱  **/
function validateEmailFiled(obj,param,description){
if(param.errorCount == 0 && obj.val().length > 0){
var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
if(!reg.test(obj.val())){
            param.errorCount =  param.errorCount + 1;
floatNotify.simple(description);
          }
      }else{
         param.errorCount =  param.errorCount + 1;
floatNotify.simple(description);
      }
}

/** 验证手机 **/

/** 验证手机  **/
function validateMobileFiled(obj,param,description){
if(param.errorCount == 0){
//验证电话号码手机号码,包含至今所有号段   
         var reg=/^1\d{10}$/;
if(!reg.test(obj.val())){
            param.errorCount =  param.errorCount + 1;
floatNotify.simple(description);
         }
      } 
}

/** 检查文件类型 **/

/**
 * 检查文件类型
 * @param ths file对象
 * @return 是否符合规格
 */
function checkImgType(ths) {
try {
var obj_file = $(ths).get(0).files;
for(var i=0;i<obj_file.length;i++){
if (!/\.(JPEG|BMP|GIF|JPG|PNG)$/.test(obj_file[i].name.toUpperCase())) {
alert("仅支持JPG、GIF、PNG、JPEG、BMP格式");
$(ths).val("");
return false;
         }
      }
   } catch (e) {
   }

return true;
}

/** 检查文件大小 **/

/**
 * 检查文件大小
 * @param ths file对象
 * @param limitSize 限制大小(k)
 * @return 是否符合规格 
 */
function checkImgSize(ths,limitSize){
try {
var maxsize = limitSize*1024;
var msgSize = limitSize+"K";
if(limitSize>=1024){
msgSize = limitSize/1024+"M";
       }
var errMsg = "上传的图片不能超过"+msgSize;
var obj_file = $(ths).get(0).files;

for(var i=0;i<obj_file.length;i++){
if(obj_file[i].size>maxsize){
alert(errMsg);
$(ths).val("");
return false;
         }
      }
   } catch (e) {

   }
return true;
}

/** forget 这是我做商城网站的时候验证手机的代码 **/

$(document).ready(function(){
	
	  //当光标离开 手机时,验证手机
	  $("#mobile").blur(function(){
		  checkPhone();
	  });
	  
	 //当光标离开 新密码时,验证密码
	  $("#password").blur(function(){
		  checkPassword();
	  });
	 
	 //当光标离开  确认新密码 时 ,验证是否相同
	  $("#confirm").blur(function(){
		  checkConfirmPW();
	  });
	
	//获取手机验证码
	  $('.get_mobile_code').click(function(){
		  
		  var _this = this;
	      if(checkPhone()){
	    	  $.ajax({
	    			url: contextPath + "/sendSMSCode", 
	    			data:{"userName":null,"mobile":$("#mobile").val()},
	    			type:'post', 
	    			dataType : 'json', 
	    			async : false,   
	    			error: function(jqXHR, textStatus, errorThrown) {
	    		 		alert(textStatus, errorThrown);
	    			},
	    			success:function(retData){
		    		    	mycountDown(_this,60);
	    			}
	    	  });
	    	  
	      }

	 });
});

//方法,验证手机
function checkPhone(){
	
	var mobile = $('input[name=mobile]').val();
    
    if(isBlank(mobile)){
       floatNotify.simple('请输入您的手机号码');
       return false;
    }
    
    if(!isPhone(mobile)){
  	  floatNotify.simple('请输入正确的手机形式');
        return false;
    }
    
    if(isPhoneExist(mobile)){
      floatNotify.simple('该手机号码不存在');
        return false;
    }
    
    return true;
}

/**判断是否为空**/
function isBlank(_value){
	if(_value==null || _value=="" || _value==undefined){
		return true;
	}
	return false;
}

/**检查是否为手机号码形式**/
function isPhone(str){
	var mobile = /^1\d{10}$/;
	return mobile.test(str);
}

/**检查手机号码是否存在**/
function isPhoneExist(phone) {
	var result = true;
	$.ajax({
			url: contextPath + "/isPhoneExist", 
			data: {"phone":phone},
			type:'post', 
			async : false, //默认为true 异步   
			dataType : 'json', 
			error: function(jqXHR, textStatus, errorThrown) {
				 //console.log(textStatus, errorThrown);
				},
			success:function(retData){
				if(retData){
					result = false;
				}
			}
		});
	return result;
}

//方法,验证密码
function checkPassword(){
	
	var password = $('input[name=password]').val();
	
	if(isBlank(password)){
        floatNotify.simple('密码不能为空!');
        return false;
     }
	
	if(password.length<6){
        floatNotify.simple('密码长度不能小于6个字符!');
        return false;
    }
	
	return true;
}

//方法,检验第二次输入的新密码
function checkConfirmPW(){
	var password = $('input[name=password]').val();
	var confirm = $('input[name=password]').val();
	  
	if(password != confirm){
		  floatNotify.simple('两次输入的新密码不一致!');
	      return false;
	}
	
	return true;
}

/** 倒计时函数 **/
function mycountDown(obj,second){

   // 如果秒数还是大于0,则表示倒计时还没结束
   if(second>=0){
       
       // 按钮置为不可点击状态
       $(obj).attr('disabled', true);
       
       // 按钮里的内容呈现倒计时状态
       $(obj).val("发送短信中"+'('+second+')');
       
       // 时间减一
       second--;
       
       // 一秒后重复执行
       setTimeout(function(){mycountDown(obj,second);},1000);
   
   }else{// 否则,按钮重置为初始状态
   	
       // 按钮置未可点击状态
       $(obj).attr('disabled', false);
       // 按钮里的内容恢复初始状态
       $(obj).val("获取手机验证码");
   }
    
}

function formSubmit(){
	var postData={};var flag = true;
	
	if(checkPhone()){//验证手机
    	postData['mobile']=$('input[name=mobile]').val();
    }else{
    	flag = false;
    	return;
    }
	
	if(checkPassword() && checkConfirmPW()){//验证密码
        postData['newPwd']=$('input[name=password]').val();
    }else{
    	flag = false;
    	return;
    }
	
	var mobileCode = $('#mobile_code').val();
	if(!isBlank(mobileCode)){
		postData['code'] = mobileCode;
	}else{
		floatNotify.simple("验证码不能为空!");
		flag = false;
    	return;
	}
	
	if(flag){
    	$.ajax({
			url:contextPath+"/changePwd",
			type:'POST',
			dataType:'text',
			data:postData,
			success:function(resp){
				if(resp=="OK"){
					floatNotify.simple("操作成功");
					setTimeout("window.location.href='"+contextPath+"/login'",2000);
				}else if(resp=="codeError"){
					$('input[name=mobile_code]').val("");//清空验证码
					floatNotify.simple('验证码错误');
				}else{
					floatNotify.simple('操作失败,请重试');
				}
			}
		});
    }
}

/** 当手机注册用户时 **/

//提交
function formSubmit(){
	
        var postData={};var flag = true;
        
        var username = $('input[name=username]').val();
        
        if(checkPhone()){//验证手机
        	postData['mobile']=$('input[name=mobile]').val();
        }else{
        	flag = false;
        	return;
        }
        
        if(checkPassword()){//验证密码
            postData['password']=$('input[name=password]').val();
        }else{
        	flag = false;
        	return;
        }
        
        postData['mobileCode'] = $('input[name=mobile_code]').val();
        
        if(flag){
        	$.ajax({
    			url:contextPath+"/userReg",
    			type:'POST',
    			dataType:'text',
    			data:postData,
    			success:function(resp){
    				if(resp=="success"){
    					window.location.href=contextPath+"/userhome";
    				}else if(resp=="codeError"){
    					//清空验证码
    					$('input[name=mobile_code]').val("");
    					floatNotify.simple('验证码错误');
    				}else{
    					floatNotify.simple('注册失败,请重试');
    				}
    			}
    		});
        }
}

/**判断是否为空**/
function isBlank(_value){
	if(_value==null || _value=="" || _value==undefined){
		return true;
	}
	return false;
}

/**检查是否为手机号码形式**/
function isPhone(str){
	var mobile = /^1\d{10}$/;
	return mobile.test(str);
}

/**检查手机号码是否存在**/
function isPhoneExist(phone) {
	var result = true;
	$.ajax({
			url: contextPath + "/isPhoneExist", 
			data: {"phone":phone},
			type:'post', 
			async : false, //默认为true 异步   
			dataType : 'json', 
			error: function(jqXHR, textStatus, errorThrown) {
				 //console.log(textStatus, errorThrown);
				},
			success:function(retData){
				if(retData){
					result = false;
				}
			}
		});
	return result;
}


//方法,验证姓名
function checkName(){
	var result=true;
	var username = $('input[name=username]').val();
	if(isBlank(username)){
		floatNotify.simple('请输入您的姓名');
		return false;
	}else if(username.length < 2){
		floatNotify.simple('姓名长度不能少于2个字符');
		return false;
	}else{
	       $.ajax({
				url: contextPath + "/isNickNameExist", 
				data: {"nickName":username},
				type:'post', 
				async : false, //默认为true 异步   
				error: function(jqXHR, textStatus, errorThrown) {
			 		 //console.log(textStatus, errorThrown);
				},
				success:function(retData){
			 		if('true' == retData){
			 			floatNotify.simple('姓名已经存在');
			 			result=false;
					}
				}
			});
	}
	return result;
}

//方法,验证手机
function checkPhone(){
	
	var mobile = $('input[name=mobile]').val();
    
    if(isBlank(mobile)){
       floatNotify.simple('请输入您的手机号码');
       return false;
    }
    
    if(!isPhone(mobile)){
  	  floatNotify.simple('请输入正确的手机形式');
        return false;
    }
    
    if(!isPhoneExist(mobile)){
  	  floatNotify.simple('该手机号码已存在!');
        return false;
    }
    
    return true;
}

//方法,验证密码
function checkPassword(){
	
	var password = $('input[name=password]').val();
	
	if(isBlank(password)){
        floatNotify.simple('密码不能为空!');
        return false;
     }
	
	if(password.length<6){
        floatNotify.simple('密码长度不能小于6个字符!');
        return false;
    }
	
	return true;
}

/** 倒计时函数 **/
function mycountDown(obj,second){

   // 如果秒数还是大于0,则表示倒计时还没结束
   if(second>=0){
       
       // 按钮置为不可点击状态
       $(obj).attr('disabled', true);
       
       // 按钮里的内容呈现倒计时状态
       $(obj).val("发送短信中"+'('+second+')');
       
       // 时间减一
       second--;
       
       // 一秒后重复执行
       setTimeout(function(){mycountDown(obj,second);},1000);
   
   }else{// 否则,按钮重置为初始状态
   	
       // 按钮置未可点击状态
       $(obj).attr('disabled', false);
       // 按钮里的内容恢复初始状态
       $(obj).val("获取手机验证码");
   }
    
}

/** 倒计时函数 **/
function bindingMycountDown(obj,second){

   // 如果秒数还是大于0,则表示倒计时还没结束
   if(second>=0){
       
       // 按钮置为不可点击状态
       $(obj).attr('disabled', true);
       
       // 按钮里的内容呈现倒计时状态
       $(obj).html("发送短信中"+'('+second+')');
       
       // 时间减一
       second--;
       
       // 一秒后重复执行
       setTimeout(function(){bindingMycountDown(obj,second);},1000);
   
   }else{// 否则,按钮重置为初始状态
   	
       // 按钮置未可点击状态
       $(obj).attr('disabled', false);
       // 按钮里的内容恢复初始状态
       $(obj).html("获取手机验证码");
   }
    
}

/** 这是倒计时的方法 **/

/**
 *  倒计时的JS
 */
var time_distance;
var totleTime;
var stop;
function countdownTime(disTime){
	time_distance =disTime;
	totleTime=time_distance;
	showTime();
}
function showTime(){
	time_distance=totleTime;
	var day=0,
	hour=0,
	minute=0,
	second=0;//时间默认值
	if(time_distance > 0){
		day = Math.floor(time_distance / (60 * 60 * 24*1000));
		hour = Math.floor(time_distance / (60 * 60*1000)) - (day * 24);
		minute = Math.floor(time_distance / (60*1000)) - (day * 24 * 60) - (hour * 60);
		second = Math.floor(time_distance/1000) - (day * 24 * 60 * 60) - (hour * 60 * 60) - (minute * 60);
	}
	if (hour <= 9) hour = '0' + hour;
	if (minute <= 9) minute = '0' + minute;
	if (second <= 9) second = '0' + second;
	// 显示时间 
	$("#time_d").text(day+'天');
	$("#time_h").text(hour+'时'); 
	$("#time_m").text(minute+'分'); 
	$("#time_s").text(second+'秒');
	stop=setTimeout("showTime()",1000);
	totleTime=totleTime-1000;
	if(totleTime<1000){
		$("#time_d").text('活动');
		$("#time_h").text('已经'); 
		$("#time_m").text('结束'); 
		$("#time_s").text('。');
		clearTimeout(stop);
		}
	
}

以上只是小编在一个商城网站里面用到的,如要其他的以下有个链接:

这里面有更多的方法: JavaScript验证

如果对你有帮助赞一个呗。你的支持是小编的动力。




-----------------------------------------------------------------------------------------------------------------

早上弄了两个小时多从十点开始,叫同事帮我带几个三文治的。

苦逼的小编等到的消息是他的单子黄了,小编的费用要gg了。

后来给了300幸苦费。

编辑于 2016-10-14 17:28