遇到这样一个需求,输入框在输入银行卡号的时候,需要每4位自动插入一个空格
以下是实现
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script> function getCaretPosition(obj) { var result = 0; if ('selectionStart' in obj) { result = obj.selectionStart; } else { try{ var rng; if (obj.tagName == "textarea") { rng = event.srcElement.createTextRange(); rng.moveToPoint(event.x, event.y); } else { rng = document.selection.createRange(); } rng.moveStart("character", -event.srcElement.value.length); result = rng.text.length; }catch (e){ throw new Error(10,"asdasdasd") } } return result; } function setCaretPosition(tObj, sPos){ if(tObj && sPos !== undefined){ setTimeout(function(){ if(tObj.setSelectionRange){ tObj.setSelectionRange(sPos, sPos); tObj.focus(); }else if(tObj.createTextRange){ var rng = tObj.createTextRange(); rng.move('character', sPos); rng.select(); } }, 0); } } </script> <script src="./usejQuery/jquery-1.8.2.js"></script> <style type="text/css"> input{ width: 800px; height: 25px; } </style> </head> <body> <input id="card" type="text" value=""> <script> function autoSplit(ele, size) { var lastValue, posn, divisor, whiteRgx, splitRgx, isBackspace; lastValue = '' whiteRgx = /\s+/g; splitRgx = new RegExp('(\\d{' + size + '})(?!$)', 'g'); divisor = size + 1; $(ele).on('input propertychange', function (event) { var pos, str, propertyName, length, newValue; str = $(this).val(); propertyName = event.originalEvent.propertyName; if (propertyName && propertyName !== 'value' || lastValue == str) { return ; } pos = getCaretPosition(this); str = str.replace(whiteRgx, ''); length = str.length; newValue = str.replace(splitRgx, '$1 '); if (newValue.length <= lastValue.length) { if (pos % divisor === 0 && isBackspace) { pos -= 1; } else if (pos % divisor === size) { newValue = newValue.split(''); if (!isBackspace) { newValue.splice(pos + 1, 1); } else { newValue.splice(pos - 1, 1); pos -= 1; } newValue = newValue.join('').replace(whiteRgx, '').replace(splitRgx, '$1 '); } } else if (pos % divisor === 0) { pos += 1; } lastValue = newValue; $(this).val(newValue); setCaretPosition(this, pos); }); $(ele).on('keydown', function (event) { isBackspace = event.keyCode === 8; }); } autoSplit($('#card'), 4); </script> </body> </html>
此外,在ie8中还有个现象就是,如果把输入框的样式中去掉width或者height,只保留一个,这样会导致input propertychange事件第一次触发,第二次不触发,第三次触发,第四次不触发……这样隔一次才触发一次。只有样式中width和height都设置后才每次都触发。不清楚什么原因
相关推荐
EditText输入电话号码、银行卡号自动添加空格分割
EditText输入电话号码、银行卡号自动添加空格分割.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
matla自动阈值分割 自动阈值分割 自动阈值分割 自动阈值分割 自动阈值 先设定一个阈值
• 采用文字识别(OCR)技术,自动识别银行卡信息(如卡号,卡所属银行等). • 通过调用 识别功能Activity,实现其他应用程序接口调用。 • 识别银行卡种类,主要是国内外20多家银行的印刷字体(平面黑色字体卡类...
word自动分割代码
png自动分割,绿色
DVD自动分割软件,可对VCD,DVD等视频进行分割,非常实用,值得下载。
银行卡号识别,有需要的朋友及时下载,可供自学tensorflow用
RAR自动分割 器.rar
• 采用文字识别(OCR)技术,自动识别银行卡信息(如卡号,卡所属银行等). • 通过调用 识别功能Activity,实现其他应用程序接口调用。 • 识别银行卡种类,主要是国内外20多家银行的印刷字体(平面黑色字体卡类...
javascript输入CD-KEY自动分割的代码.docx
Tensorflow实现图像分割的自动人像分割
DVD自动分割软件简体中文免费软件DVD自动分割软件简体中文免费软件
基于机器学习的极光图像自动分割方法
基于图割算法的影像自动分割软件,交互式可视化界面。 完整的软件。
blog.csdn.net/u014679795/article/details/78696444 批量图像自动分割 opencv grabcut
他能自动分割那些文本比较大的且多个章节揉杂在一起的文本,你也可以选择被分割后独立文本的所含章节数
主动学习的白细胞图像自动分割
带删除功能的EditText;显示或者隐藏密码;可设置自动添加分隔符分割电话号码、银行卡号等;支持禁止Emoji表情符号输入
MATLAB 实现的物体自动检测、自动分割、自动识别,可以运行,实现一些简单物体的提取!!