将该步骤作为<input type =“number”/>中的指南

时间:2018-04-24 19:53:16

标签: javascript html html5-input-number

我怎样才能为a创建step属性 <input type="number">更多地是指导,因此我可以输入任何正整数,但增量箭头会将当前值更改为固定数量。

e.g。我可以输入0,1,2,3,4,5,6,7,...... 并且该步骤将值增加为0,6,12,18,24,...等...

如果我知道如何捕获javascript中的升压/降压事件,我可以实现这一点。但是,我找不到办法做到这一点。我已经在下面的伪代码中准确显示了我想要的内容:

<input id="num" type="number">
<script>
  inp = document.getElementById("num");
  var increment = 6;
  if ( step up pressed ){
    inp.value += increment;
  }
  else if  (step down pressed ){
    inp.value -= increment;
  }
</script>

2 个答案:

答案 0 :(得分:1)

这会有用吗?

<input id="num" type="number" step="6">

答案 1 :(得分:1)

这似乎是一个可怕的黑客,但这是我的问题的答案:

<input id='num' type=number step=0.00001 onchange="increment()">

<script>
    document.prev_num = document.getElementById("num").value;
    function increment() {
      var step = 6;
      var catch_step = 0.00001;
      var curr_num = parseFloat(document.getElementById("num").value);
      if ( Math.abs(curr_num - (document.prev_num + catch_step)) < 1e-7 ){
        curr_num  = curr_num - catch_step + step;
      }
      else if (Math.abs(curr_num - (document.prev_num - catch_step)) < 1e-7){
        curr_num = curr_num + catch_step - step;
      }
      else if (curr_num != parseInt(curr_num)){
        alert("You can only input integers.")
        curr_num = parseInt(curr_num);
      }
      document.getElementById("num").value = curr_num;
      document.prev_num = curr_num;
    }
</script>

因此HTML强制数字为0.00001的倍数,包括所有整数。

当数字发生变化时,Javascript会动作。如果该更改仅为0.000001的更改,则几乎肯定会按下步骤按钮。

不接受非整数。

相关问题