作者: admin

  • js正则身份证验证

    js 正则 验证 身份证 正则

    最好的jQuery正则验证身份证代码:
    按照身份证的算法定制而成,精确度完美支持15和18位. 错一个数字或字母都通不过,无需通过数据处理来验证

     

    方法一:

    //身份证检验
    var vcity={ 11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",
    21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",
    33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",
    42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",
    51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",
    63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"
    };
    
    function checkCard(card){
    //是否为空
    if(!card||!isCardNo(card)||!checkProvince(card)||!checkBirthday(card)||!checkParity(card)){
    ZlyJs.divTip("请输入正确的身份证号码");
    jQuery(".sf_list").focus();
    return false;
    }
    return true;
    };
    
    
    //检查号码是否符合规范,包括长度,类型
    function isCardNo(card){
    //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
    var reg = /(^\d{15}$)|(^\d{17}(\d|X)$)/;
    if(reg.test(card) === false){
    return false;
    }
    return true;
    };
    
    //取身份证前两位,校验省份
    function checkProvince(card){
    var province = card.substr(0,2);
    if(vcity[province] == undefined) {
    return false;
    }
    return true;
    };
    
    //检查生日是否正确
    function checkBirthday(card){
    var len = card.length;
    //身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字
    if(len == '15'){
    var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/;
    var arr_data = card.match(re_fifteen);
    var year = arr_data[2];
    var month = arr_data[3];
    var day = arr_data[4];
    var birthday = new Date('19'+year+'/'+month+'/'+day);
    return verifyBirthday('19'+year,month,day,birthday);
    }
    //身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X
    if(len == '18'){
    var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/;
    var arr_data = card.match(re_eighteen);
    var year = arr_data[2];
    var month = arr_data[3];
    var day = arr_data[4];
    var birthday = new Date(year+'/'+month+'/'+day);
    return verifyBirthday(year,month,day,birthday);
    }
    return false;
    };
    
    //校验日期
    function verifyBirthday(year,month,day,birthday){
    var now = new Date();
    var now_year = now.getFullYear();
    //年月日是否合理
    if(birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day){
    //判断年份的范围(3岁到100岁之间)
    var time = now_year - year;
    if(time >= 3 && time <= 100)
    {
    return true;
    }
    return false;
    }
    return false;
    };
    //校验位的检测
    function checkParity(card){
    //15位转18位
    card = changeFivteenToEighteen(card);
    var len = card.length;
    if(len == '18'){
    var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
    var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
    var cardTemp = 0, i, valnum;
    for(i = 0; i < 17; i ++){
    cardTemp += card.substr(i, 1) * arrInt[i];
    }
    valnum = arrCh[cardTemp % 11];
    if(valnum == card.substr(17, 1)){
    return true;
    }
    return false;
    }
    return false;
    };
    //15位转18位身份证号
    function changeFivteenToEighteen(card){
    if(card.length == '15'){
    var arrInt = new array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
    var arrCh = new array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
    var cardTemp = 0, i;
    card = card.substr(0, 6) + '19' + card.substr(6, card.length - 6);
    for(i = 0; i < 17; i ++){
    cardTemp += card.substr(i, 1) * arrInt[i];
    }
    card += arrCh[cardTemp % 11];
    return card;
    }
    return card;
    };
    
    
    //调用
    if (!checkCard(code)) {
      alert("请输入正确的身份证号码");
      return false;
    }

    https://blog.csdn.net/websites/article/details/51480541

     

     

    方法二:

    /*
    根据〖中华人民共和国国家标准 GB 11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
    地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。
    出生日期码表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。
    顺序码表示同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。顺序码的奇数分给男性,偶数分给女性。
    校验码是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。
    
    出生日期计算方法。
    15位的身份证编码首先把出生年扩展为4位,简单的就是增加一个19或18,这样就包含了所有1800-1999年出生的人;
    2000年后出生的肯定都是18位的了没有这个烦恼,至于1800年前出生的,那啥那时应该还没身份证号这个东东,⊙﹏⊙b汗...
    下面是正则表达式:
    出生日期1800-2099 (18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])
    身份证正则表达式 /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i 
    15位校验规则 6位地址编码+6位出生日期+3位顺序号
    18位校验规则 6位地址编码+8位出生日期+3位顺序号+1位校验位
    
    校验位规则 公式:∑(ai×Wi)(mod 11)……………………………………(1)
    公式(1)中: 
    i----表示号码字符从由至左包括校验码在内的位置序号; 
    ai----表示第i位置上的号码字符值; 
    Wi----示第i位置上的加权因子,其数值依据公式Wi=2^(n-1)(mod 11)计算得出。
    i 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
    Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1
    
    */
    //身份证号合法性验证 
    //支持15位和18位身份证号
    //支持地址编码、出生日期、校验位验证
    function IdentityCodeValid(code) { 
    code = code.toString();
    var city={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江 ",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北 ",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏 ",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外 "};
    var tip = "";
    var pass= true;
    if(!code || !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(code)){
    tip = "身份证号格式错误";
    pass = false;
    }
    else if(!city[code.substr(0,2)]){
    tip = "地址编码错误";
    pass = false;
    }
    else{
    //18位身份证需要验证最后一位校验位
    if(code.length == 18){
    code = code.split('');
    //∑(ai×Wi)(mod 11)
    //加权因子
    var factor = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];
    //校验位
    var parity = [ 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 ];
    var sum = 0;
    var ai = 0;
    var wi = 0;
    for (var i = 0; i < 17; i++)
    {
    ai = code[i];
    wi = factor[i];
    sum += ai * wi;
    }
    var last = parity[sum % 11];
    if(parity[sum % 11] != code[17]){
    tip = "校验位错误";
    pass =false;
    }
    }
    }
    if(!pass) console.log(tip);
    return pass;
    }
    
    
    //调用
    if( !IdentityCodeValid(idcard) ){
     alert('请输入正确身份证', '好的');
     return false;
    }

     

  • html5 video事件

    事件:

    play
    pause
    progress
    error

     $(xx).on('play',function(){
          //播放时回调
     })
    
    
     $(xx)[0].play()  //js触发播放
    
    

     

    waiting //视频缓存中

    https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/waiting_event

     

    playing //视频正在播放

    https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/playing_event

    const video = document.querySelector('video');
    
    video.addEventListener('waiting', (event) => {
       console.log('Video is waiting for more data.');
    });

     

     

     

    audioTracks 返回表示可用音频轨道的 AudioTrackList 对象。
    autoplay 设置或返回是否在就绪(加载完成)后随即播放视频。
    buffered 返回表示视频已缓冲部分的 TimeRanges 对象。
    controller 返回表示视频当前媒体控制器的 MediaController 对象。
    controls 设置或返回视频是否应该显示控件(比如播放/暂停等)。
    crossOrigin 设置或返回视频的 CORS 设置。
    currentSrc 返回当前视频的 URL。
    currentTime 设置或返回视频中的当前播放位置(以秒计)。
    defaultMuted 设置或返回视频默认是否静音。
    defaultPlaybackRate 设置或返回视频的默认播放速度。
    duration 返回视频的长度(以秒计)。
    ended 返回视频的播放是否已结束。
    error 返回表示视频错误状态的 MediaError 对象。
    height 设置或返回视频的 height 属性的值。
    loop 设置或返回视频是否应在结束时再次播放。
    mediaGroup 设置或返回视频所属媒介组合的名称。
    muted 设置或返回是否关闭声音。
    networkState 返回视频的当前网络状态。
    paused 设置或返回视频是否暂停。
    playbackRate 设置或返回视频播放的速度。
    played 返回表示视频已播放部分的 TimeRanges 对象。
    poster 设置或返回视频的 poster 属性的值。
    preload 设置或返回视频的 preload 属性的值。
    readyState 返回视频当前的就绪状态。
    seekable 返回表示视频可寻址部分的 TimeRanges 对象。
    seeking 返回用户当前是否正在视频中进行查找。
    src 设置或返回视频的 src 属性的值。
    startDate 返回表示当前时间偏移的 Date 对象。
    textTracks 返回表示可用文本轨道的 TextTrackList 对象。
    videoTracks 返回表示可用视频轨道的 VideoTrackList 对象。
    volume 设置或返回视频的音量。
    width 设置或返回视频的 width 属性的值。

    http://www.w3school.com.cn/jsref/dom_obj_video.asp

     

     

  • 安卓一键锁屏Screen Lock v5.1 Ad Free.apk

    需要先设置:

    “设置”—“辅助功能”—“已安装的服务”—“屏幕锁”打开

    “设置”—“锁定屏幕”—“安全锁定设置”—“自动锁定”设置‘立即’

    链接: https://pan.baidu.com/s/1EYRvhKfOVhM9vRj9SWa0EA 提取码: nt4x

    下载后后缀改成apk

     

    https://pan.baidu.com/s/16smiErQTAr0foSejyAJPbw#y4r5 密码:y4r5

  • js赛事、比赛图、对阵图tournaments

    js 赛程图,对阵图,比赛图 淘汰赛

    模仿网站:https://challonge.com/

    效果图:

    10元有偿,能接受在加qq77134056,说明来意

    录入比分(针对后台):team_vs

     

     

    一个人多个赛程图:

    多个赛程图(针对前端展示,不能录入比分)team_vs_v2