Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 文本框中仅允许.25、.50和.75_Javascript_Jquery - Fatal编程技术网

Javascript 文本框中仅允许.25、.50和.75

Javascript 文本框中仅允许.25、.50和.75,javascript,jquery,Javascript,Jquery,我正在开发一个web应用程序,并使用javascript限制或舍入一个值。每当我在文本框中输入任何十进制值时,它都应该四舍五入到.25、.50、.75或.00。你知道怎么做吗?即使我只能输入.25、.50、.75和.00也可以。。。但是如何仅对这些特定值进行限制?您只需要一个if语句 例如,让我们假设您试图四舍五入到最接近的整数,您将执行以下操作或类似操作: var remainder = value - Math.floor(value); if(remainder < 0.5)

我正在开发一个web应用程序,并使用javascript限制或舍入一个值。每当我在文本框中输入任何十进制值时,它都应该四舍五入到.25、.50、.75或.00。你知道怎么做吗?即使我只能输入.25、.50、.75和.00也可以。。。但是如何仅对这些特定值进行限制?

您只需要一个if语句

例如,让我们假设您试图四舍五入到最接近的整数,您将执行以下操作或类似操作:

var remainder = value - Math.floor(value);
if(remainder < 0.5)
    newValue = Math.floor(value);
else
    newValue = Math.floor(value) + 1;
var余数=值-数学下限(值);
如果(余数<0.5)
newValue=数学地板(值);
其他的
新值=数学地板(值)+1;
但是,有很多方法可以做到这一点,您只需要选择适当的数字而不是0.5,并且可能需要检查几个范围

我并不是说这是最好的选择,但这应该会给你一个想法


对于文本框条目,您可以每按一次键向上/向下等运行一次,并用
新值替换该值

jQuery UI微调器内置了此功能

var decimal = n - Math.floor(n)
decimal=decimal*100;
var factor = Math.round(decimal/25)
decimal  = n + 0.25*factor;


如果Jon Taylors的回答不明显,使用if语句解决此问题的适当方法如下:

var floorValue = Math.floor(value);
var remainder = value - floorValue;
if (remainder < 0.325) {
    if (remainder < 0.125) {
        newValue = floorValue;
    } else {
        newValue = floorValue + 0.25;
    }
} else {
    if (remainder < 0.625) {
        newValue = floorValue + 0.5;
    } else if (remainder < 0.875) {
        newValue = floorValue + 0.75;
    } else {
        newValue = floorValue + 1;
    }
}
var floorValue=Math.floor(值);
var余数=值-楼层价值;
如果(余数<0.325){
如果(余数<0.125){
newValue=楼层价值;
}否则{
新值=楼层价值+0.25;
}
}否则{
如果(余数<0.625){
新值=楼层价值+0.5;
}否则如果(余数<0.875){
新值=楼层价值+0.75;
}否则{
新值=楼层价值+1;
}
}
或:


这是关于Java还是JavaScript?这两个是不相关的。考虑到他添加了jquery,我猜应该是JavaScript。我很想看看是否有人有一个优雅的解决方案,但你总是可以提取小数并使用if。这并不漂亮,但因为你几乎没有选择,它实际上很可能是最出色的。但不可维护。如果要多次使用,至少将
Math.floor(value)
存储在一个var中(他需要4个if/else)。正如我所说,这只是一个例子,他需要这样做。这并不意味着是一种优化的解决方案,也不意味着是他确切问题的解决方案,那是由他来解决的。是的,这不是一个批评,更不是一个补充答案的注释。如果不清楚的话,请道歉。Na这很公平:)想想看,这么多人给出的答案都是被复制和粘贴的。我更愿意给出能让OP思考的答案,同时也能告诉他们应该朝着什么方向前进。因此,尽管我的大多数答案都不正确;哈哈,人们更喜欢复制/粘贴。优雅。我喜欢。这是一个很好的解决方案,但遗憾的是,我不能用它来限制可被0.2整除的数字(存在舍入问题,给出的值为0.8000001)。@Thor84no嗨,我没有正确测试,因为我受Ipad资源的限制,但可能是:(Math.round(5*n)/5),上面的脚本不是我的,我在大学的课程上看到过,但美是我心中的定论;-)@是的,由于某种原因,
*.2
有舍入错误,
/5
没有问题。谢谢
var n = $('#myInput').val();
alert(.25 * Math.round( 4 * n));