test: <input type="text" onkeyup="chk(this)" value="12345678901234567" /> <script> function chk(obj){ var val = obj.value, num = val.replace(/^(\d{0,17}).*$/,'$1'); num<17 ? obj.value = num : obj.value = num + val.slice(17,val.length).replace(/^((?:\d|[a-zA-Z])*).*$/,'$1'); } </script>
{
if(obj.value=="") return;
else{
if(obj.value.length<18)
obj.value=obj.value.replace(/[^\d]/g,'');
else
obj.value=obj.value.substr(0,17)+obj.value.substr(17,18).replace(/[^A-Za-z]/,'');
}
}<input type="text" onkeyup="limit_value(this)" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" maxlength="18">
改成下面的:(刚才的少了数字)
obj.value=obj.value.substr(0,17)+obj.value.substr(17,18).replace(/[^0-9A-Za-z]/,'');
obj.value=obj.value.substr(0,17)+obj.value.substr(17,18).replace(/[^x]/,'');
<input type="text" onkeyup="chk(this)" value="12345678901234567" />
<script>
function chk(obj){
var val = obj.value, num = val.replace(/^(\d{0,17}).*$/,'$1');
num<17 ? obj.value = num : obj.value = num + val.slice(17,val.length).replace(/^((?:\d|[a-zA-Z])*).*$/,'$1');
}
</script>
replace(/[^X0-9]/,'')
如果输入小写x就转换为答谢X
replace(/[^x]/,'X')我想把上面两条语句合为一条replace(/[^X0-9]/,'';/[^x]/,'X')
{
if(obj.value=="") return;
else{
if(obj.value.length <18)
obj.value=obj.value.replace(/[^\d]/g,'');
if(obj.value.length==18&obj.value.substr(17,1)=="x")
obj.value=obj.value.substr(0,17)+'X';
else
obj.value=obj.value.substr(0,17)+obj.value.substr(17,1).replace(/[^X0-9]/,'');
}
}
这样就可以了,哈哈