0

SQLLITE データベースから価格値を取得しています。DB のデータ型は REAL でした。

値を取得し、jQuery を使用してテキスト ボックスに入力します。

$(current_tr).find('.unit_price').val(row.unit_price);

このコードはエラーなく正常に動作しており、テキスト ボックスに金額が表示されます。しかし、その価格のため、小数点以下 2 桁の価格としてフォーマットする必要があります。Stackoverflow からこれを行うカスタム関数を見つけました。

String.prototype.toPrice = function () {
    var v;
    if (/^\d+(,\d+)$/.test(this))
        v = this.replace(/,/, '.');
    else if (/^\d+((,\d{3})*(\.\d+)?)?$/.test(this))
        v = this.replace(/,/g, "");
    else if (/^\d+((.\d{3})*(,\d+)?)?$/.test(this))
        v = this.replace(/\./g, "").replace(/,/, ".");
    var x = parseFloat(v).toFixed(2).toString().split("."),
    x1 = x[0],
    x2 = ((x.length == 2) ? "." + x[1] : ".00"),
    exp = /^([0-9]+)(\d{3})/;
    while (exp.test(x1))
        x1 = x1.replace(exp, "$1" + "," + "$2");
    return x1 + x2;
}

関数はエラーなしで次の状態で動作しています。

$(current_tr).find('.unit_price').val('5000'.toPrice());

しかし、何も返さないdb値に適用しようとしました。テキストボックスが空白になっています。次の方法で私は疲れました。

$(current_tr).find('.unit_price').val(row.unit_price.toPrice());

$(current_tr).find('.unit_price').val((row.unit_price).toString().toPrice());

しかし、DBオブジェクトに対しては機能しません。私のやり方に間違いはありますか?

4

0 に答える 0