Jquery输入数字的倍数(keyup)

时间:2016-01-07 16:53:30

标签: javascript jquery

如何让input元素只接受50的倍数?

我知道我们可以将step="50"指定为属性,但我更喜欢由the keyup event触发的解决方案。

我找到了这段代码,阻止用户输入少于50的数字。

问题:如何调整此代码,以便只输入50的倍数?

$('#numberbox').keyup(function(){
  if ($(this).val() < 50){
    alert("Minimum Quantity: 50");
    $(this).val('50');
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="numberbox" type='number'>

3 个答案:

答案 0 :(得分:2)

使用模运算符

var multiple = 50;

$('#numberbox').keyup(function(){
   if (parseInt($(this).val()) % multiple ) {
      alert("Only multiples of " + multiple + " allowed");
      $(this).val(multiple);
   }
});

答案 1 :(得分:1)

您可以使用 Remainder (%) 执行此操作,请查看以下示例。

  

当一个操作数除以第二个操作数时,余数运算符返回剩余的余数。它总是采取红利的标志,而不是除数。

$('#numberbox').keyup(function(){
  if ($(this).val()%50==0){
    $('#result').text($(this).val()+' is multiple of 50');
  }else{
     $('#result').text($(this).val()+' is not a multiple of 50');
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="numberbox" type='number'>
<span id='result'></span>

希望这有帮助。

答案 2 :(得分:1)

我希望blur代替keyup,因为keyup会保持警惕。要知道它是否为50的倍数,请检查条件为modulo,即%,如parseInt($(this).val())%50 != 0

$('#numberbox').blur(function(){
  if (parseInt($(this).val())%50 != 0){
    alert("Multiples of 50 should be entered");
    $(this).val('50');
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="numberbox" type='number'>