【问题标题】:Using HTML to limit to appropriate decimal numbers but no letters使用 HTML 限制适当的十进制数字,但没有字母
【发布时间】:2020-08-22 12:02:18
【问题描述】:

我已尝试使用此代码:

<input type="number" onkeypress="return (event.charCode >= 48 && event.charCode <= 57) || event.charCode == 46 || event.charCode == 0 ">

但遗憾的是,这仍然允许 1567.5432.5678.4567(多个小数点)。

有没有办法将其限制为只有 1 个小数点,但不限制小数位或有效数字?

【问题讨论】:

    标签: html input numbers decimal


    【解决方案1】:

    使用正则表达式仅使用数值和一位小数。

    ^(\d+)?([.]?\d{0,2})?$

    如果您想使用大比例尺(即数字中小数点右侧的位数),请在此处更改数字 \d{0,2}

    上面的表达式允许小数位数在 0 到 2 次之间。

    【讨论】:

    • 你的正则表达式将小数位数限制为两位,他在点后说无限数。
    • unlimited decimal places or significant figures:答案解释了如何灵活使用它并增加或减少小数位数。
    • 抱歉,编辑时间早于评论时间。
    • 谢谢...可悲的是(对此的新手)我实际上还不知道如何使用此代码。这在哪里使表单中的 html 输入只接受带或不带小数的数字?另外,再次感谢您。
    【解决方案2】:

    使用正则表达式来限制小数点。

    /\d+\.?\d*/

    例如

    '123.675.009'.match(/\d+\.?\d*/)

    返回 123.675

    【讨论】:

      【解决方案3】:

      我最终使用了这种方法:

      function isNumberKey(evt){
          var charCode = (evt.which) ? evt.which : evt.keyCode
          if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 46)
              return false;
          return true;
          if (charCode === 46) {
      
          // Allow only 1 decimal point
          if ((element.value) && (element.value.indexOf('.') >= 0))
            return false;
          else
            return true;
        }
      }
      

      这可以解决输入字母和多于一位小数的问题。

      【讨论】:

        猜你喜欢
        • 2020-05-01
        • 2014-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-29
        • 2020-10-14
        • 1970-01-01
        相关资源
        最近更新 更多