JS限制文本框输入金额并保留两位小数

怼烎@ 2022-07-14 14:58 307阅读 0赞

直接上代码

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

发表评论

表情:
评论列表 (有 0 条评论,307人围观)

还没有评论,来说两句吧...

相关阅读