我在MVC表单上有以下TextBoxFor:
<div class="col-xs-3">
@Html.TextBoxFor(m => m.SalesSubTotal, null, new { @class = "form-control", title = "", @tabindex = "-1", @readonly = "readonly", @style = "text-align:right", Value = String.Format("{0:C2}", Model.SalesSubTotal) })
</div>
用户永远不会在此字段中输入实际值。该字段始终通过JavaScript函数中的一行更新,如下所示:
$("#SalesSubTotal").val(salesSubTotal.toFixed(2));
当页面首次显示时,输入显示$ 0.00,正如我所料。但是,更新字段时,永远不会显示货币符号。因此,它不会显示90.15美元,而是显示90.15。
有人能看出我做错了吗?
答案 0 :(得分:2)
调用javascript时,您的数字格式{0:C2}
不再有效:
$("#SalesSubTotal").val(salesSubTotal.toFixed(2));
实际上只是将字段设置为带有两位小数的值,就像您经历过的那样。你必须在那里添加美元符号以获得正确的结果:
$("#SalesSubTotal").val("$" + salesSubTotal.toFixed(2));
答案 1 :(得分:2)
第一次使用Value = String.Format("{0:C2}", Model.SalesSubTotal)
呈现元素时,将应用字符串格式,但是在JS中更改没有该格式的值。
您可以创建一个帮助函数来格式化值并使用它,如下所示:
(function() {
function currencyFormat(val) {
return `$${val.toFixed(2)}`;
}
let salesSubTotal = 90.1525346252;
$("#SalesSubTotal").val(currencyFormat(salesSubTotal));
})();
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="SalesSubTotal">
&#13;
或者,您可以使用jQuery.fn.extend()
扩展jQuery原型。
(function() {
$.fn.extend({
currencyVal: function(val) {
this.val(`$${val.toFixed(2)}`);
}
});
let salesSubTotal = 90.1525346252;
$("#SalesSubTotal").currencyVal(salesSubTotal);
})();
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="SalesSubTotal">
&#13;