2

私はWebアプリケーションで作業しており、JavaScriptを使用して値を制限または四捨五入しています。テキストボックスに小数値を入力するときは常に、.25、.50、.75、または.00に四捨五入する必要があります。それを行う方法はありますか?.25、.50、.75、.00しか入力できない場合でも問題ありません...しかし、これらの特定の値のみを制限するにはどうすればよいですか?

4

5 に答える 5

4

jQueryUIスピナーにはこの機能が組み込まれています。

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ではなく適切な数値を選択するだけで、いくつかの範囲を確認する必要がある場合があります。

私はこれが最良の選択肢であるとは決して言っていませんが、これはあなたにアイデアを与えるはずです。

テキストボックスエントリに関しては、これをすべてのキーアップ/キーダウンなどで実行し、値を次の値に置き換えることができます。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 に答える