$(function(){ //获取浏览器指纹 function getF(){ var fin = Fingerprint2.get(function(components) { const values = components.map(function(component,index) { if (index === 0) { //把微信浏览器里UA的wifi或4G等网络替换成空,不然切换网络会ID不一样 return component.value.replace(/\bNetType\/\w+\b/, '') } return component.value }) // 生成最终id murmur murmur = Fingerprint2.x64hash128(values.join(''), 31); send(murmur); }); } $('#myform').submit(function(){ //验证 if(!check()){ return false; } //获取浏览器指纹 getF(); return false; }); function send(murmur){ var url = $('#myform').attr('action'); $.ajax({ url:url, type: 'POST', data: $('#myform').serialize()+'&murmur='+murmur, beforeSend: function (){ layer.load(0,{shade:0.1}); }, success : function(data){ layer.closeAll(); if(data.sta == 1){ layer.alert(data.msg,{icon:1,time:-1,shade:0.3}); $('#myform')[0].reset(); }else if(data.sta == 3){ layer.alert(data.msg,{icon:4,time:-1,shade:0.3}); } }, error: function(){ layer.closeAll(); layer.alert('提交失败,请重新提交或直接联系我们。'); } }); } //正则验证 //使用方法 //添加obj 需要验证的区域对象 //添加class bp_check //添加limit属性,值为正则表达试 //添加err属性,值为错误提示文本 check = function check(obj){ try{ chckeRes = true; if(obj){ checkObj = obj+' .bp_check'; }else{ checkObj = '.bp_check'; } //没有需要验证的对象 if($(checkObj).length == 0){ return true; } //当改变或点击事,取消错误提醒样式 $(document).on('click',checkObj,function(){ try{layer.close(tips);}catch(e){console.log(e);} $(this).css('border',$(this).attr('defbor')); }); $(document).on('keydown',checkObj,function(){ try{layer.close(tips);}catch(e){console.log(e);} $(this).css('border',$(this).attr('defbor')); }); //验证 $(checkObj).each(function(){ var val = $(this).val(); var limit = eval($(this).attr('limit')); var type = $(this).attr('type'); //单选框 if(type == 'radio'){ val = $(this).find('input[type="radio"]:checked').val(); if(val == undefined){ val=''; } } //复选框 if(type == 'checkbox'){ obj = $(this).find('input[type="checkbox"]:checked'); var val=''; for(var i=0; i