【问题标题】:multiple decimal separators on html inputhtml输入上的多个小数分隔符
【发布时间】:2017-01-17 19:29:14
【问题描述】:

我正在寻找一个输入,它可以采用具有多个小数分隔符的 MHz 频率。

14.010.56 MHz

目前我的输入为

<input type="number" step="any" class="form-control" id="freq" placeholder="Frequency MHz">

但这仅允许使用一个小数点,就好像它是“正常”浮点数一样。这个可以吗?

【问题讨论】:

  • 我不熟悉写频率的正确方法——这是14 thousand and ten point 56,还是字面意思是14 point 10 point 56?如果是第一个选项,那么肯定应该是14,010.56,并带有逗号。如果是第二个,那么这不是标准意义上的“数字”,因此不能这样输入。您可能需要一个普通的文本框并使用正则表达式验证是否。
  • 它的 14 mhz 然后 10 khz 然后 56 hz。使用逗号您建议的方式,即 14,010.56 是 KHz 表示法,即 14,000 和 10 KHz 是 14.010 MHz,我正在寻找 MHz 表示法,所以需要猜测 reg 表达式,但我不知道如何形成它跨度>
  • 恐怕像 14.010.56 MHz 这样的符号不符合 任何 语言环境约定。接受它会产生误导和风险。
  • 不会误导我,这就是我想使用它的原因......

标签: html html-input


【解决方案1】:

HTML5 为input 元素引入了pattern 属性,该属性采用在提交时验证的正则表达式。

您需要的正则表达式可能只是 1+ 个数字,然后是一个点,然后是 1+ 个数字,然后是一个点,然后是 1+ 个数字:\d+\.\d+\.\d+:

<form>
    <input type="text" name="freq" placeholder="Frequency MHz" pattern="\d+\.\d+\.\d+" />
    <input type="submit" value="GO" />
</form>

【讨论】:

    【解决方案2】:

    你能接受输入作为字符串然后拆分字符串以创建一个包含三个值的数组吗?

    或者,连续放置三个输入,用“.”分隔。就像电话号码一样

    【讨论】:

      【解决方案3】:

      使用这个正则表达式

      ^[0-9]*\.{1}[0-9]*\.{1}[0-9]*$
      

      【讨论】:

        猜你喜欢
        • 2019-12-20
        • 2021-09-14
        • 1970-01-01
        • 1970-01-01
        • 2023-03-21
        • 2019-09-01
        • 2015-10-30
        • 2012-12-25
        • 2015-01-09
        相关资源
        最近更新 更多