JS校验银行卡号、输入卡号时放大效果

一、(校验格式)

function CheckBankNo(t_bankno) {

  var bankno = $.trim(t_bankno);

  if(bankno == "") {

  layer.msg("请填写银行卡号");

  return false;

}

if(bankno.length < 16 || bankno.length > 19) {

  layer.msg("银行卡号长度必须在16到19之间");

  return false;

}

var num = /^\d*$/; //全数字

if(!num.exec(bankno)) {

  layer.msg("银行卡号必须全为数字");

  return false;

}

//开头6位

var strBin = "10,18,30,35,37,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,58,60,62,65,68,69,84,87,88,94,95,98,99";

if(strBin.indexOf(bankno.substring(0, 2)) == -1) {

  layer.msg("银行卡号开头6位不符合规范");

  return false;

}

//Luhm校验(新)

var lastNum=bankno.substr(bankno.length-1,1);//取出最后一位(与luhm进行比较)

var first15Num=bankno.substr(0,bankno.length-1);//前15或18位

var newArr=new Array();

for(var i=first15Num.length-1;i>-1;i--){ //前15或18位倒序存进数组

  newArr.push(first15Num.substr(i,1));

}

var arrJiShu=new Array(); //奇数位*2的积 <9

var arrJiShu2=new Array(); //奇数位*2的积 >9

var arrOuShu=new Array(); //偶数位数组

for(var j=0;j<newArr.length;j++){

if((j+1)%2==1){//奇数位

if(parseInt(newArr[j])*2<9)

  arrJiShu.push(parseInt(newArr[j])*2);

else

  arrJiShu2.push(parseInt(newArr[j])*2);

}

else //偶数位

arrOuShu.push(newArr[j]);

}

var jishu_child1=new Array();//奇数位*2 >9 的分割之后的数组个位数

var jishu_child2=new Array();//奇数位*2 >9 的分割之后的数组十位数

for(var h=0;h<arrJiShu2.length;h++){

  jishu_child1.push(parseInt(arrJiShu2[h])%10);

  jishu_child2.push(parseInt(arrJiShu2[h])/10);

}

var sumJiShu=0; //奇数位*2 < 9 的数组之和

var sumOuShu=0; //偶数位数组之和

var sumJiShuChild1=0; //奇数位*2 >9 的分割之后的数组个位数之和

var sumJiShuChild2=0; //奇数位*2 >9 的分割之后的数组十位数之和

var sumTotal=0;

for(var m=0;m<arrJiShu.length;m++){

  sumJiShu=sumJiShu+parseInt(arrJiShu[m]);

}

for(var n=0;n<arrOuShu.length;n++){

  sumOuShu=sumOuShu+parseInt(arrOuShu[n]);

}

for(var p=0;p<jishu_child1.length;p++){

  sumJiShuChild1=sumJiShuChild1+parseInt(jishu_child1[p]);

  sumJiShuChild2=sumJiShuChild2+parseInt(jishu_child2[p]);

}

//计算总和

sumTotal=parseInt(sumJiShu)+parseInt(sumOuShu)+parseInt(sumJiShuChild1)+parseInt(sumJiShuChild2);

//计算Luhm值

var k= parseInt(sumTotal)%10==0?10:parseInt(sumTotal)%10;

var luhm= 10-k;

if(lastNum==luhm){

  return true;

}

else{

  layer.msg("银行卡号不符合规范");

  return false;

}

}

二、(输入时放大)

//1、CSS:放大的样式

<style>

.inputCard-wrap {

position: relative;

}

.inputCard-wrap .panelCard {

display: none;

position: absolute;

top: -30px;

left: 79px;

z-index: 100;

border: 1px #ffce6e solid;

padding: 10px;

height: 8px;

font-size: 1.7em;

line-height: 8px;

color: #585858;

}

</style>

//2、内容:

<div class="divfirst inputCard-wrap">

银行卡号:

<input type="text" name="bankCardNumber" class="input-text size-S inputCard"

id="bankCardNumber"

style="margin-left: 5px;" placeholder="输入银行卡号">

<div class="panelCard"></div>

</div>

//3、JS:

<script>

$(function () {

/* 银行卡号实时验证放大显示 */

$(".inputCard").keyup(function (e) {

  var self = $.trim(e.target.value),

  parent = $(e.target).closest(".inputCard-wrap"),

  panel = $(".panelCard", parent),

  val = self.replace(/\D/g, ‘‘);

if (self.length > 19) {

  this.value = self.substr(0, 19);

  return this.value;

}

if (val == self) {

  panel.show();

  val = self.replace(/(....)(?=.)/g, ‘$1 ‘);

  panel.html(val);

} else {

  panel.hide();

  return self;

}

});

$(".inputCard").unbind(‘focusin‘);

$(".inputCard").bind(‘focusin‘, function (e) {

var self = $.trim(e.target.value),

parent = $(e.target).closest(".inputCard-wrap"),

panel = $(".panelCard", parent),

val = self.replace(/(....)(?=.)/g, ‘$1 ‘);

if (val != ‘‘) {

  panel.show();

  panel.html(val);

}

});

$(".inputCard").unbind(‘focusout‘);

$(".inputCard").bind(‘focusout‘, function (e) {

  var parent = $(e.target).closest(".inputCard-wrap"),

  panel = $(".panelCard", parent);

  panel.hide();

});

})

</script>

时间: 2024-08-29 09:02:01

JS校验银行卡号、输入卡号时放大效果的相关文章

网页端实现输入卡号四字隔开

在网页上,模拟实现银行客户端的功能:四字隔开且只能输入数字,有两种方法,测试兼容主流PC端浏览器:手机上,有些厂商会出现随机加入一些字符 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/

js传递参数中包含+号时的处理方法

encodeURI(url).replace(/\+/g, '%2B') 例子: $scope.getAnesthesiawaystatistical = function (annual, anesthesiaMethodRep) { var Anesthesiurl = "/api/v1/AnesthesiAwayStatistical/GetAnesthesiAwayStatisticalCount?anesthesiaMethodRep=" + "'" +

js校验金额输入

//验证非负实数,保留2位小数,不采取四舍五入,不能去掉无效零,obj是this //示例:<input type="text" onkeyup="IWS_CheckDecimal(this)" /> function IWS_CheckDecimal(obj) { var temp = /^\d+\.?\d{0,2}$/; if (temp.test(obj.value)) { } else { obj.value = obj.value.substr

证件类型为身份证号时进行身份证校验

需求:代办人身份证号改为代办人证件类型(默认为身份证号),后面跟着号码,房主和代办人的证件类型为身份证号时进行身份证校验 sf_ghgl_add.jsp <td class="labelCss">代办人证件类型:</td> <td><select id="zjlx" width="10px" class="easyui-combobox" data-options="url:

身份证号正则校验(js校验+JAVA校验)

js校验身份证号[15位和18位] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 8

盈创动力之 JS校验方法

var IS_NULL = 128; // 10000000var IS_FULL = 64; // 01000000var IS_HALF = 32; // 00100000var IS_ASCII = 16; // 00010000var IS_NUM = 8; // 00001000var IS_DATE = 4; // 00000100var IS_PHONE = 2; // 00000010var IS_EMAIL = 1; // 00000001var IS_NOT_NULL = 0

python 之简单模拟银行系统功能(卡号申请、还款、支付、取现)

一.简单说明 1.源代码文件见附件 Credit.zip 2.关于转账功能,因时间问题,转账功能待续 4.逻辑图 二.代码 1.包encryption中的(password.py文件) #!/usr/bin/env python # -*- coding: utf-8 -*- """ Created on Thu Nov 10 14:47:29 2016 密码相关功能 @author: toby """ import hashlib, re #密

身份证校验,前台js校验,后台java校验

js校验: var vcity={ 11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古", 21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏", 33:"浙江",34:"安徽",35:"福建"

Linux下读取RFID卡号(C串口编程)

由于项目需要用到RFID.GPRS.摄像头等模块所以便看了一下,整理了一下学习思路,本篇先是整理一下串口读取RFID卡号的程序思路,后面还会更其他的 RFID模块: 本次采用的是125K的RFID读卡器和标签,很容易理解的,其实就是一张卡片里面存了一串数字(这个问题有点像你问一个艺术家洛必达法则是啥咦洛必达是啥),然后有个读卡器,当你把卡片放到读卡器上时,读卡器会将卡里面存的卡号读取出来,然后放到串口发送缓冲区,等待我们去读取,那么问题就是怎么读取. 串口读写: 大家都知道.linux下面一切皆