2

我正在开发一个 Web 应用程序并使用 javascript 来限制或舍入一个值。每当我在文本框中输入任何十进制值时,都应将其四舍五入为 0.25、0.50、0.75 或 0.00。知道怎么做吗?即使只能输入 0.25、0.50、0.75 和 .00 也可以……但是如何仅限制这些特定值?

4

5 回答 5

4

jQuery UI 微调器内置了这个功能。

http://btburnett.com/spinner/example/example.html

或者

http://www.htmldrive.net/items/demo/541/jQuery-UI-Spinner-numeric-stepper

于 2012-07-18T09:33:51.487 回答
4

或者:

var n = $('#myInput').val();
alert(.25 * Math.round( 4 * n));
于 2012-07-18T09:37:19.330 回答
2

你只需要一个 if 语句

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

var remainder = value - Math.floor(value);
if(remainder < 0.5)
    newValue = Math.floor(value);
else
    newValue = Math.floor(value) + 1;

然而,有很多方法可以做到这一点,您只需要选择适当的数字而不是 0.5,并且可能需要检查多个范围。

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

至于文本框条目,您可以在每次 keyup/keydown 等时运行它,并将值替换为您的newValue

于 2012-07-18T09:24:15.833 回答
1
var decimal = n - Math.floor(n)
decimal=decimal*100;
var factor = Math.round(decimal/25)
decimal  = n + 0.25*factor;
于 2012-07-18T09:28:28.793 回答
1

如果 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;
    }
}
于 2012-07-18T09:34:53.263 回答