1. 程式人生 > >原生js限制input輸入金額

原生js限制input輸入金額

  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>