如何让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'>
答案 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'>