【问题标题】:How to restrict the input type "number" to powers of 2?如何将输入类型“数字”限制为 2 的幂?
【发布时间】:2016-10-11 12:30:50
【问题描述】:

我想限制 <input type=number> 只接受 2 的幂,例如 1、2、4、8、16 ...

是否有一个纯 HTML 解决方案,或者我应该使用 javascript?

【问题讨论】:

    标签: javascript html input numbers


    【解决方案1】:

    我猜你需要 javascript。没有纯 HTML 解决方案。

    【讨论】:

      【解决方案2】:

      你肯定必须使用脚本......在 html 中没有静态解决方案来检测这种模式......但是

      如果您想匹配静态或动态字符串模式,那么在 html 中,您可以选择对某些正则表达式模式使用 'pattern' 属性.. 例如...

      您可以使用<input type=text pattern='^\d\d/\d\d/\d\d\d\d$' >(只是为了解释,尽管它会接受 99/99/9999 作为不正确的日期)。 要强制用户以 dd/MM/yyyy 模式输入日期,您可以在 http://regexone.com... 上了解有关正则表达式的更多信息。 regex代表正则表达式

      【讨论】:

        【解决方案3】:

        我将发布我的 javascript 方法来执行此操作(正如答案所说,纯 HTML 是不可能的)

        <input id="koko" type="number" min=1 onchange="applyChange(validate(this))">
         <span id='note' hidden><font color=red>Please enter powers of two</font> 
        
        </span>
        <script>
        var saver=1;
        function applyChange(num)
        {
         document.getElementById('koko').value=num;
        }
        function validate(input)
        {
         document.getElementById('note').hidden=true;
         var number=input.value;
         if(Number.isInteger(Math.log2(number)))
             return (saver=number);
         else
          {
          document.getElementById('note').hidden=false;
           return saver;
         }
        }
        </script>
        

        【讨论】:

          猜你喜欢
          • 2014-01-25
          • 2017-10-18
          • 2017-06-07
          • 1970-01-01
          • 1970-01-01
          • 2019-07-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多