提问人:janak gera 提问时间:12/5/2016 最后编辑:Manoj Rjanak gera 更新时间:12/5/2016 访问量:224
添加 2 个数字并用逗号在标签上显示结果
Add 2 numbers and show result on label with comma's
问:
我正在为某些功能编写一些代码
我的第一个文本框
<asp:TextBox ID="txtLeasePaymentFixed" type="text" runat="server" class="number" CssClass="form-control" Style="text-align: right" TabIndex="101" placeholder="e.g 123,456,789" onKeyUp="fncCalculateSum()" onBlur="fncCalculateSum()"></asp:TextBox>
我的第二个文本框是
<asp:TextBox ID="txtLeasePaymentVairable" type="text" runat="server" CssClass="form-control" Style="text-align: right" TabIndex="102" placeholder="e.g 123,456,789" onKeyUp="fncCalculateSum()" onBlur="fncCalculateSum()"></asp:TextBox>
Toltal 显示的标签是这样的
<asp:Label ID="lbltotal" runat="server" Text=""></asp:Label>
调用 onblur 和 onkeyUp 的函数是这样的:
function fncCalculateSum() {
var LeasePaymentFixed = $('#MainContent_txtLeasePaymentFixed');
var LeasePaymentVariable = $('#MainContent_txtLeasePaymentVairable');
if (LeasePaymentFixed.val() == '' || LeasePaymentFixed.val() == null) {
PaymentFixed = 0;
}
else {
PaymentFixed = parseFloat(LeasePaymentFixed.val());
}
if (LeasePaymentVariable.val() == '' || LeasePaymentVariable.val() == null) {
PaymentVariable = 0;
}
else {
PaymentVariable = parseFloat(LeasePaymentVariable.val());
}
(Sum) = PaymentFixed + PaymentVariable
if ((LeasePaymentFixed.val().trim() == '' && LeasePaymentVariable.val().trim() == '') || (LeasePaymentFixed.val() == null && LeasePaymentVariable.val() == null)) {
$("#MainContent_lbltotal").text('');
}
else {
$("#MainContent_lbltotal").html(parseFloat(Sum));
}
}
现在我使用 jQuery 代码在每 3 位数字后以国际格式应用逗号,如下所示
$('#MainContent_txtLeasePaymentFixed,#MainContent_txtLeasePaymentVairable,#MainContent_lbltotal').keyup(function(event){
// skip for arrow keys
if(event.which >= 37 && event.which <= 40){
event.preventDefault();
}
var $this = $(this);
var num = $this.val().replace(/,/gi, "").split("").reverse().join("");
var num2 = RemoveRougeChar(num.replace(/(.{3})/g,"$1,").split("").reverse().join(""));
console.log(num2);
// the following line has been simplified. Revision history contains original.
$this.val(num2);
});
function RemoveRougeChar(convertString){
if(convertString.substring(0,1) == ","){
return convertString.substring(1, convertString.length)
}
return convertString;
}
当我在第一个文本框中写数字时,它带有逗号,这很好。 当我在第二个文本框中写时也是如此,但它没有显示标签上所有数字的总和。
答:
0赞
Sébastien Vercammen
12/5/2016
#1
小心!您丢失了使用逗号进行转换的数据:parseFloat
let foo = 21231323.246;
let bar = foo.toLocaleString("en-US"); // "21,231,323.246"
console.log(parseFloat(bar)); // 21
您应该检查您的转化率,并确保您处理的数字正确无误。
评论
0赞
janak gera
12/5/2016
谢谢,我知道逗号不能在parseflot中,但是我如何传递结果并将其转换为解析浮点数
0赞
Sébastien Vercammen
12/5/2016
我可能会将数字的值(在格式化之前)存储在 DOM 元素的数据集中(例如)。这样,您可以更轻松地获得原始值。el.dataset.value = number;
评论