Javascript 验证输入的数字是否为整数或";“一半”;

Javascript 验证输入的数字是否为整数或";“一半”;,javascript,jquery,Javascript,Jquery,我正在从用户处获取输入,它需要是整数或0.5的倍数 例如,7、23和5.5均有效,但3.1和2.7无效 换句话说,如果用户键入2.3,则会出现一个警报,告诉他们只能键入2.5 如何执行此验证?因为它们正在输入字符串,而浮点数很难正确输入:-)我建议在转换为浮点之前检查字符串输入本身 如果包含字符,请确保最后两个字符为.5 $('button').on('click', function() { var val = Number($('input[type=text]').val()).toF

我正在从用户处获取输入,它需要是整数或
0.5
的倍数

例如,
7
23
5.5
均有效,但
3.1
2.7
无效

换句话说,如果用户键入
2.3
,则会出现一个警报,告诉他们只能键入
2.5


如何执行此验证?

因为它们正在输入字符串,而浮点数很难正确输入:-)我建议在转换为浮点之前检查字符串输入本身

如果包含
字符,请确保最后两个字符为
.5

$('button').on('click', function() {

 var val = Number($('input[type=text]').val()).toFixed(1); 
 if(val  % 0.5) {
   alert('This value should' + (parseInt(val) + 0.5));
 }

});
您可能还需要检查其他情况,具体取决于您希望允许的情况。例如,
7.0
可能与
2.50000000
一样有效


但是,为了简单起见,我只想声明输入必须是一个整数,或者以
.5

结尾,因为它们输入的是字符串,而浮点数是出了名的很难得到正确答案:-)我建议在转换为浮点之前检查字符串输入本身

$('button').on('click', function() {

 var val = Number($('input[type=text]').val()).toFixed(1); 
 if(val  % 0.5) {
   alert('This value should' + (parseInt(val) + 0.5));
 }

});
如果包含
字符,请确保最后两个字符为
.5

$('button').on('click', function() {

 var val = Number($('input[type=text]').val()).toFixed(1); 
 if(val  % 0.5) {
   alert('This value should' + (parseInt(val) + 0.5));
 }

});
您可能还需要检查其他情况,具体取决于您希望允许的情况。例如,
7.0
可能与
2.50000000
一样有效


但是,为了简单起见,我只想声明输入必须是一个整数,或者以
.5

结尾。哦,我不知道。看起来一个浮点数应该有足够的精度来精确到小数点后1位。是的,但是如果用户输入
2.499999999999
,你是想抱怨它还是让它安静地修改为
2.5
?我认为这对政府工作来说已经足够了。但你是对的;简单地限制最后一个数字为0或5就足够了。谢谢你的主意。哦,我不知道。看起来一个浮点数应该有足够的精度来精确到小数点后1位。是的,但是如果用户输入
2.499999999999
,你是想抱怨它还是让它安静地修改为
2.5
?我认为这对政府工作来说已经足够了。但你是对的;简单地限制最后一个数字为0或5就足够了。谢谢你的主意。啊,我也不确定我是否会完全平等浮点数并不总是对等号有很好的响应。为什么不:
如果(this.value%0.5)/*值不是0.5的倍数*/
您也不需要
new
,创建原语比创建对象要好得多,
Number(someInput.value)
将更有效。请注意,它可能会返回
NaN
,因此您应该处理这个问题。啊,我也不确定是否会使用完全相等的值。:)浮点数并不总是对等号有很好的响应。为什么不:
如果(this.value%0.5)/*值不是0.5的倍数*/
您也不需要
new
,创建原语比创建对象要好得多,
Number(someInput.value)
将更有效。请注意,它可能返回
NaN
,因此您应该处理这个问题。
$('button').on('click', function() {

 var val = Number($('input[type=text]').val()).toFixed(1); 
 if(val  % 0.5) {
   alert('This value should' + (parseInt(val) + 0.5));
 }

});