是否有任何函数可以在不声明值的情况下检查值(仅0.25步)


is there any function to check values (only 0.25 steps) without declaring them?

我正在构建一个表单,我想检查用户输入。只允许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
}
相关文章: