0

10 進数値のドロップダウン リストがあります。(文字列としてフォーマット)

<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 メソッドを使用すると 10 進精度が削除され、値 28.00 が SelectSize 関数に渡されることです。もちろん、私のリストにはこの値のオプションがないため、リセット機能は失敗します。

toFixed(2) 部分なしで SelectSize 関数を使用すると、「20.00」などの値が「20」として渡され、SelectSize 関数もドロップダウン ボックスのサイズのリセットに失敗します。

これらの 10 進数を文字列と同じように処理する関数を検索しましたが、これまでのところ成功していません。どうすればこれを解決できますか?

助けてくれてありがとう!

4

3 に答える 3

2

ほぼすべての値で機能するものを次に示します。実際の例: 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);
于 2012-05-31T09:21:23.763 に答える
0

Hiyatdkplzこの作業デモを参照してください http://jsfiddle.net/B3Uwj/1/

私が何かを逃した場合は私に知らせてください、これは想定どおりに正常に機能しています。すなわち

20.00が渡されたときに機能し、見積もりに失敗しません。

toFixed(2)部分なしでSelectSize関数を使用すると、「20.00」などの値は「20」として渡され、SelectSize関数もドロップダウンボックスのサイズをリセットできません。

Jqueryコード

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();
    });​
于 2012-05-31T09:19:31.940 に答える
0

次のように selectSize 関数を変更します。

SelectSize(backupSize);

function SelectSize(size) {
    $("#sizebox option").attr("selected","");
    $("#sizebox option[value='"+size+"']").attr("selected","selected");
}
于 2012-05-31T09:14:38.277 に答える