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