如何处理下拉列表的十进制值而不舍入或修剪零

How to handle the decimal values of my dropdown list without rounding or trimming zeros

本文关键字:不舍 舍入 修剪 十进制 何处理 处理 下拉列表      更新时间:2023-09-26

我有一个带有十进制值的下拉列表。(格式为字符串)

<select id="SizeBox">
   <option id="size_5" value="14.00">14</option>
   <option id="size_6" value="16.00">16</option>
   <option id="size_7" value="18.00">18</option>
   <option id="size_8" value="20.00">20</option>
   <option id="size_9" value="24.00">24</option>
   <option id="size_10" value="28.00">28</option>
   <option id="size_11" selected="selected" value="28.35">28,35</option>
   <option id="size_12" value="36.00">36</option>
</select>

我总是获取选定的值并将其保存在变量中:

var backupSize = "28.35";

当用户选择其他大小并想要撤消其更改时,我提供了一个重置按钮,该按钮应再次选择 backupSize 值。

SelectSize(parseFloat(backupSize).toFixed(2));
function SelectSize(size) {
   $('#SizeBox').val(size);
}

问题是使用此 toFixed 方法会删除我的十进制精度并将值 28.00 传递给 SelectSize 函数。当然,我的列表中没有具有此值的选项,因此重置功能失败。

如果我使用 SelectSize 函数

而不使用 toFixed(2) 部分, 那么像 "20.00" 这样的值将作为 "20" 传递, 并且 SelectSize 函数也无法重置下拉框中的大小。

我已经搜索了像字符串一样处理这些十进制数字的函数,但到目前为止还没有成功。我该如何解决这个问题?

感谢您的任何帮助!

以下是几乎

适用于任何值的东西:工作示例:http://jsfiddle.net/4DSNS/2/

var backupSize = 20
var backupSize = 28.35
var backupSize = "28.35"
var backupSize = "20.00"
var backupSize = "20"
var backupSize = "28.35"
var backupSize = "28,35"
function SelectSize(size) {
   size = size.toString().replace(',','.');
   parseFloat(size).toFixed(2);
   $('#SizeBox').val(size);
}
SelectSize(backupSize);

像这样修改你的 selectSize 函数:

SelectSize(backupSize);
function SelectSize(size) {
    $("#sizebox option").attr("selected","");
    $("#sizebox option[value='"+size+"']").attr("selected","selected");
}

Hiya tdk 请参阅此工作演示 http://jsfiddle.net/B3Uwj/1/

如果我错过了什么,请告诉我,这应该工作正常。

当通过 20.00 时它有效,它不会失败报价:

如果我使用 SelectSize 函数而不使用 toFixed(2) 部分,则 像"20.00"这样的值将作为"20"传递,SelectSize 函数 也无法重置下拉框中的大小。

J查询代码

var backupSize = "20.00";
SelectSize(parseFloat(backupSize).toFixed(2));
function SelectSize(size) {
    alert("Size is (Preserving the .00 ==> " + size);
   $('#SizeBox').val(size);
} 
// mini jQuery plugin that formats to two decimal places
    (function($) {
        $.fn.currencyFormat = function() {
            this.each( function( i ) {
                $(this).change( function( e ){
                    if( isNaN( parseFloat( this.value ) ) ) return;
                    this.value = parseFloat(this.value).toFixed(2);
                });
            });
            return this; //for chaining
        }
    })( jQuery );
    // apply the currencyFormat behaviour to elements with 'currency' as their class
    $( function() {
        $('.currency').currencyFormat();
    });​