如果用户只输入一个,我怎样才能让输入文本将其数字扩展到两个?
How can I get an input text to expand its digits to two if the user only enters one?
我想在 "dollar format" 中的文本输入中显示值; IOW,而不是“10.5”,我希望它是“10.50”
我能够像这样在总计框中做到这一点(最后一行代码):
$(document).on("blur", '.amountbox', function (e) {
var amount1 = $('[id$=boxAmount1]').val() != '' ? parseFloat($('[id$=boxAmount1]').val()) : 0;
var amount2 = $('[id$=boxAmount2]').val() != '' ? parseFloat($('[id$=boxAmount2]').val()) : 0;
var amount3 = $('[id$=boxAmount3]').val() != '' ? parseFloat($('[id$=boxAmount3]').val()) : 0;
var amount4 = $('[id$=boxAmount4]').val() != '' ? parseFloat($('[id$=boxAmount4]').val()) : 0;
var amount5 = $('[id$=boxAmount5]').val() != '' ? parseFloat($('[id$=boxAmount5]').val()) : 0;
var grandtotal = amount1 + amount2 + amount3 + amount4 + amount5;
$('[id$=boxGrandTotal]').val(parseFloat(grandtotal).toFixed(2));
});
那行得通,我想也许我可以通过这样做(将“.toFixed(2)”添加到它们的 val() 中)让各个 "amount" 框以类似的方式工作:
var amount1 = $('[id$=boxAmount1]').val() != '' ? parseFloat($('[id$=boxAmount1]').val().toFixed(2)) : 0;
var amount2 = $('[id$=boxAmount2]').val() != '' ? parseFloat($('[id$=boxAmount2]').val().toFixed(2)) : 0;
. . .
没有;事实上,它破坏了现有的功能。
然后我 "dialed it back a bit" 试了第一个 "Amount" 盒子,像这样:
$('[id$=boxAmount1]').val() == parseFloat($('[id$=boxAmount1]').val().toFixed(2));
...但这也失败了(输入“10.5”并且 exiting/blurring 没有像我希望的那样将“10.5”转换为“10.50”)。
如何使输入始终扩展或收缩以显示两位数? IOW:
"10" should become "10.00"
"10.5" should become "10.50"
"10.567" should become "10.57"
等等
而不是这个:
$('[id$=boxAmount1]').val() == parseFloat($('[id$=boxAmount1]').val().toFixed(2));
... 这样做:
$('[id$=boxAmount1]').val(parseFloat($('[id$=boxAmount1]').val()).toFixed(2));
请注意,toFixed()
方法仅适用于数字,因此您需要将其应用于 parseFloat()
的数字结果而不是 val()
的字符串结果。
您的整个代码可以简化为以下内容:
$(document).on('blur', '.amountbox', function() {
var grandtotal = 0;
$('.amountbox').each(function() {
var v= +$(this).val();
if(v>'') {
$(this).val(v.toFixed(2));
grandtotal+= v;
}
});
$('#boxGrandTotal').val(grandtotal.toFixed(2));
});
jQueryeach
方法省去了单独查看每个输入的麻烦。
在字符串前加上加号 (+) 会将其强制转换为数字,因此不需要 parseFloat
。
为了能够将其应用于所有文本输入(当它们为空时不会对其他文本输入产生负面影响),我不得不将代码扩展到 5 个处理程序(除了原始的处理程序之外):
/* boxAmount1...boxAmount5 - when any of them change, update boxGrandTotal */
$(document).on("blur", '.amountbox', function (e) {
var amount1 = $('[id$=boxAmount1]').val() != '' ? parseFloat($('[id$=boxAmount1]').val()) : 0;
var amount2 = $('[id$=boxAmount2]').val() != '' ? parseFloat($('[id$=boxAmount2]').val()) : 0;
var amount3 = $('[id$=boxAmount3]').val() != '' ? parseFloat($('[id$=boxAmount3]').val()) : 0;
var amount4 = $('[id$=boxAmount4]').val() != '' ? parseFloat($('[id$=boxAmount4]').val()) : 0;
var amount5 = $('[id$=boxAmount5]').val() != '' ? parseFloat($('[id$=boxAmount5]').val()) : 0;
var grandtotal = amount1 + amount2 + amount3 + amount4 + amount5;
$('[id$=boxGrandTotal]').val(parseFloat(grandtotal).toFixed(2));
});
$(document).on("blur", '[id$=boxAmount1]', function (e) {
$('[id$=boxAmount1]').val(parseFloat($('[id$=boxAmount1]').val()).toFixed(2));
});
$(document).on("blur", '[id$=boxAmount2]', function (e) {
$('[id$=boxAmount2]').val(parseFloat($('[id$=boxAmount2]').val()).toFixed(2));
});
$(document).on("blur", '[id$=boxAmount3]', function (e) {
$('[id$=boxAmount3]').val(parseFloat($('[id$=boxAmount3]').val()).toFixed(2));
});
$(document).on("blur", '[id$=boxAmount4]', function (e) {
$('[id$=boxAmount4]').val(parseFloat($('[id$=boxAmount4]').val()).toFixed(2));
});
$(document).on("blur", '[id$=boxAmount5]', function (e) {
$('[id$=boxAmount5]').val(parseFloat($('[id$=boxAmount5]').val()).toFixed(2));
});
Bonzo 的插件时间?
我想在 "dollar format" 中的文本输入中显示值; IOW,而不是“10.5”,我希望它是“10.50”
我能够像这样在总计框中做到这一点(最后一行代码):
$(document).on("blur", '.amountbox', function (e) {
var amount1 = $('[id$=boxAmount1]').val() != '' ? parseFloat($('[id$=boxAmount1]').val()) : 0;
var amount2 = $('[id$=boxAmount2]').val() != '' ? parseFloat($('[id$=boxAmount2]').val()) : 0;
var amount3 = $('[id$=boxAmount3]').val() != '' ? parseFloat($('[id$=boxAmount3]').val()) : 0;
var amount4 = $('[id$=boxAmount4]').val() != '' ? parseFloat($('[id$=boxAmount4]').val()) : 0;
var amount5 = $('[id$=boxAmount5]').val() != '' ? parseFloat($('[id$=boxAmount5]').val()) : 0;
var grandtotal = amount1 + amount2 + amount3 + amount4 + amount5;
$('[id$=boxGrandTotal]').val(parseFloat(grandtotal).toFixed(2));
});
那行得通,我想也许我可以通过这样做(将“.toFixed(2)”添加到它们的 val() 中)让各个 "amount" 框以类似的方式工作:
var amount1 = $('[id$=boxAmount1]').val() != '' ? parseFloat($('[id$=boxAmount1]').val().toFixed(2)) : 0;
var amount2 = $('[id$=boxAmount2]').val() != '' ? parseFloat($('[id$=boxAmount2]').val().toFixed(2)) : 0;
. . .
没有;事实上,它破坏了现有的功能。
然后我 "dialed it back a bit" 试了第一个 "Amount" 盒子,像这样:
$('[id$=boxAmount1]').val() == parseFloat($('[id$=boxAmount1]').val().toFixed(2));
...但这也失败了(输入“10.5”并且 exiting/blurring 没有像我希望的那样将“10.5”转换为“10.50”)。
如何使输入始终扩展或收缩以显示两位数? IOW:
"10" should become "10.00"
"10.5" should become "10.50"
"10.567" should become "10.57"
等等
而不是这个:
$('[id$=boxAmount1]').val() == parseFloat($('[id$=boxAmount1]').val().toFixed(2));
... 这样做:
$('[id$=boxAmount1]').val(parseFloat($('[id$=boxAmount1]').val()).toFixed(2));
请注意,toFixed()
方法仅适用于数字,因此您需要将其应用于 parseFloat()
的数字结果而不是 val()
的字符串结果。
您的整个代码可以简化为以下内容:
$(document).on('blur', '.amountbox', function() {
var grandtotal = 0;
$('.amountbox').each(function() {
var v= +$(this).val();
if(v>'') {
$(this).val(v.toFixed(2));
grandtotal+= v;
}
});
$('#boxGrandTotal').val(grandtotal.toFixed(2));
});
jQueryeach
方法省去了单独查看每个输入的麻烦。
在字符串前加上加号 (+) 会将其强制转换为数字,因此不需要 parseFloat
。
为了能够将其应用于所有文本输入(当它们为空时不会对其他文本输入产生负面影响),我不得不将代码扩展到 5 个处理程序(除了原始的处理程序之外):
/* boxAmount1...boxAmount5 - when any of them change, update boxGrandTotal */
$(document).on("blur", '.amountbox', function (e) {
var amount1 = $('[id$=boxAmount1]').val() != '' ? parseFloat($('[id$=boxAmount1]').val()) : 0;
var amount2 = $('[id$=boxAmount2]').val() != '' ? parseFloat($('[id$=boxAmount2]').val()) : 0;
var amount3 = $('[id$=boxAmount3]').val() != '' ? parseFloat($('[id$=boxAmount3]').val()) : 0;
var amount4 = $('[id$=boxAmount4]').val() != '' ? parseFloat($('[id$=boxAmount4]').val()) : 0;
var amount5 = $('[id$=boxAmount5]').val() != '' ? parseFloat($('[id$=boxAmount5]').val()) : 0;
var grandtotal = amount1 + amount2 + amount3 + amount4 + amount5;
$('[id$=boxGrandTotal]').val(parseFloat(grandtotal).toFixed(2));
});
$(document).on("blur", '[id$=boxAmount1]', function (e) {
$('[id$=boxAmount1]').val(parseFloat($('[id$=boxAmount1]').val()).toFixed(2));
});
$(document).on("blur", '[id$=boxAmount2]', function (e) {
$('[id$=boxAmount2]').val(parseFloat($('[id$=boxAmount2]').val()).toFixed(2));
});
$(document).on("blur", '[id$=boxAmount3]', function (e) {
$('[id$=boxAmount3]').val(parseFloat($('[id$=boxAmount3]').val()).toFixed(2));
});
$(document).on("blur", '[id$=boxAmount4]', function (e) {
$('[id$=boxAmount4]').val(parseFloat($('[id$=boxAmount4]').val()).toFixed(2));
});
$(document).on("blur", '[id$=boxAmount5]', function (e) {
$('[id$=boxAmount5]').val(parseFloat($('[id$=boxAmount5]').val()).toFixed(2));
});
Bonzo 的插件时间?