用js控制input只能输入正整数或两位小数

2,764 阅读1分钟

请看代码

<body>
  <input type="text" oninput="checkInput(this)">
  <script>
    function checkInput(box) {
      const reg = /^\d+(\.\d{0,2})?$/
      let val = box.value
      if (!reg.test(val)) {
        if (isNaN(val)) {// 不是数的时候找到第一个不是数的字符,把这个字符及其后面的字符都删了
          for (var i = 0; i < val.length;i ++) {
            const cur = val[i]
            if (isNaN(cur)){
              if (cur === '.'){// '点'也不是数,但是却是数的一部分
                if (val.indexOf(cur) !== val.lastIndexOf(cur)){ // 当'点'不是第一次出现的时候,把后面的删除
                  val = val.substr(0,val.length-1)
                }
                continue
              }
              val = val.substr(0,i)
              break
            }
          }
        } else {// 是数的时候说明只是小数输多了,把后面的删了即可
          val = val.substr(0,val.length-1)
        }
        box.value = val
      }
    }
  </script>
</body>