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オブジェクトに対しては機能しません。私のやり方に間違いはありますか?