<input type="tel" id="bankCard" />
document.getElementById('bankCard').addEventListener('input',function () { formatInput(this,/\D/g,19); },false) //格式化 /[^0-9,X]/g 身份证 /\D/g 银行卡 function formatInput(elem,patten,len) { var curpos = elem.selectionStart; var old_value = elem.value; if (elem.value.replace(patten, '').length > len) { elem.value = paddingSpace(elem.value.replace(patten, '') .substring(0, len)); } else { elem.value = paddingSpace(elem.value.replace(patten, '')); } if (old_value[curpos - 1] == ' ') { curpos += -1; } else { var old_cursor = old_value.slice(0, curpos); var old_cursor_spaced = paddingSpace(old_cursor.replace(patten,'')); curpos += old_cursor_spaced.length - old_cursor.length; } setTimeout(function() { elem.focus(); //设置光标位置 elem.setSelectionRange(curpos, curpos); }, 0); } // 格式化空格 function paddingSpace(str){ return str.replace(/....(?!$)/g,'$& ') // return str.replace(/\s/,'').replace(/([0-9,X]{4})(?=[0-9,X])/g,"$1 "); }