原生js限制input输入金额

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_31177681/article/details/80182994
  1. <!doctype html>  
  2. <html>  
  3. <head>  
  4. <meta charset="utf-8">  
  5. <title>JS限制文本框输入金额并保留两位小数</title>  
  6. <script type="text/javascript">  
  7.    
  8. /**  
  9. * 实时动态强制更改用户录入  
  10. * arg1 inputObject  
  11. **/  
  12. function amount(th){  
  13.     var regStrs = [  
  14.         ['^0(\\d+)$', '$1'], //禁止录入整数部分两位以上,但首位为0  
  15.         ['[^\\d\\.]+$', ''], //禁止录入任何非数字和点  
  16.         ['\\.(\\d?)\\.+', '.$1'], //禁止录入两个以上的点  
  17.         ['^(\\d+\\.\\d{2}).+', '$1'] //禁止录入小数点后两位以上  
  18.     ];  
  19.     for(var i=0; i<regStrs.length; i++){  
  20.         var reg = new RegExp(regStrs[i][0]);  
  21.         th.value = th.value.replace(reg, regStrs[i][1]);  
  22.     }  
  23. }  
  24.    
  25. /**  
  26. * 录入完成后,输入模式失去焦点后对录入进行判断并强制更改,并对小数点进行0补全  
  27. * arg1 inputObject  
  28. **/  
  29. function overFormat(th){  
  30.     var v = th.value;  
  31.     if(v === ''){  
  32.         v = '0.00';  
  33.     }else if(v === '0'){  
  34.         v = '0.00';  
  35.     }else if(v === '0.'){  
  36.         v = '0.00';  
  37.     }else if(/^0+\d+\.?\d*.*$/.test(v)){  
  38.         v = v.replace(/^0+(\d+\.?\d*).*$/, '$1');  
  39.         v = inp.getRightPriceFormat(v).val;  
  40.     }else if(/^0\.\d$/.test(v)){  
  41.         v = v + '0';  
  42.     }else if(!/^\d+\.\d{2}$/.test(v)){  
  43.         if(/^\d+\.\d{2}.+/.test(v)){  
  44.             v = v.replace(/^(\d+\.\d{2}).*$/, '$1');  
  45.         }else if(/^\d+$/.test(v)){  
  46.             v = v + '.00';  
  47.         }else if(/^\d+\.$/.test(v)){  
  48.             v = v + '00';  
  49.         }else if(/^\d+\.\d$/.test(v)){  
  50.             v = v + '0';  
  51.         }else if(/^[^\d]+\d+\.?\d*$/.test(v)){  
  52.             v = v.replace(/^[^\d]+(\d+\.?\d*)$/, '$1');  
  53.         }else if(/\d+/.test(v)){  
  54.             v = v.replace(/^[^\d]*(\d+\.?\d*).*$/, '$1');  
  55.             ty = false;  
  56.         }else if(/^0+\d+\.?\d*$/.test(v)){  
  57.             v = v.replace(/^0+(\d+\.?\d*)$/, '$1');  
  58.             ty = false;  
  59.         }else{  
  60.             v = '0.00';  
  61.         }  
  62.     }  
  63.     th.value = v;   
  64. }  
  65. </script>  
  66. </head>  
  67. <body>  
  68. <input type="text" name="city" value="" onKeyUp="amount(this)" onBlur="overFormat(this)" />  
  69. </body>  
  70. </html>  

猜你喜欢

转载自blog.csdn.net/sinat_31177681/article/details/80182994