我正在构建一个表单,我想检查用户输入。只允许0到30之间带有2位小数的数字,但仅在这些步骤中增加0.25步。例如,这个值是允许的:0.25;1.50;3.75。。。该值不允许为0.26;1.53。。。我可以在不声明所有允许值的情况下进行检查吗?我希望有人知道我的意思并能帮助我。
感谢
值除以0.25 时不应留下余数
检查$value % 0.25 == 0
当然,将其限制在的范围内
使用一个简单的"for"-循环:
var valid=false;
for(var i=0;i<30*4;i++){
if(value==i*0.25)
valid=true;
}
if(valid){
// It's a valid input
}
希望这能有所帮助;)
编辑:改为使用modulo(请参阅其他帖子),如果你有很多代码,这确实会很耗时。
fiddle Demo
if (this.value % .25 === 0 && this.value <= 30 && this.value >= 0 && this.value.trim().length)
您可以获取该值,将其强制转换为Number(只是为了确定),将其乘以100,然后检查除法的其余部分。代码中:
var value = $('#yourFieldId').val();
// Cast it from String to Number
value = Number(value);
// now check that it is in the range
if( value < 30 && value > 0 ){
if( (value * 100) % 25 === 0) ){
return "It's valid"; //perhaps true?
}
}
return 'not valid'; // perhaps you want to return false
试试这样的东西:
<?php
// $i = 3.25;
$dec = explode('.', $i);
$dec = end($dec);
if($dec % 25 == 0 || $dec == 5)
echo 'Accept';
?>
如果使用regex,这是一个解决方案(如果不使用,则没有问题)
# ^[+-]?(?:[0-9]|[12][0-9]|30)'.(?:[27]5|[05]0)$
^
[+-]? # optional + or -
(?:
[0-9] # 0 - 9
| [12] [0-9] # 10 - 29
| 30 # 30
)
'. # .
(?:
[27] 5 # 25 or 75
| [05] 0 # 00 or 50
)
$
或者,在"00"answers"50"上有可选的小数点和尾随零
^ [+-]?
(?:
[0-9]
| [12] [0-9]
| 30
)
(?:
'.
(?:
[27] 5
| [05] 0?
)
)?
$
在jQuery中,您这样做是为了检查值:
if ($("#num").val() % 0.25 == 0 && $("#num").val().length >= 0
&& $("#num").val().length <= 30)) {
// Valid number
}
但是,也不要忘记在服务器端控制值。
在PHP中,你可以这样做:
if (strlen($val) >= 0 && strlen($val) <= 30 && $val % 0.25 == 0) {
// Valid number
}