Jquery 如果用户只输入一个数字,如何将输入文本的数字扩展为两个?

Jquery 如果用户只输入一个数字,如何将输入文本的数字扩展为两个?,jquery,tofixed,Jquery,Tofixed,我想在“美元格式”的文本输入中显示值;瞧,我要的不是“10.5”,而是“10.50” 我可以在这样的总计框(最后一行代码)中执行此操作: 在这种情况下,我想也许我可以通过这样做(将“.toFixed(2)”添加到它们的val()中)让各个“amount”框以类似的方式工作: 它没有;事实上,它打破了现有的功能 于是我“拨回一点”,试着只拨第一个“金额”框,如下所示: $('[id$=boxAmount1]').val() == parseFloat($('[id$=boxAmount1]').v

我想在“美元格式”的文本输入中显示值;瞧,我要的不是“10.5”,而是“10.50”

我可以在这样的总计框(最后一行代码)中执行此操作:

在这种情况下,我想也许我可以通过这样做(将“.toFixed(2)”添加到它们的val()中)让各个“amount”框以类似的方式工作:

它没有;事实上,它打破了现有的功能

于是我“拨回一点”,试着只拨第一个“金额”框,如下所示:

$('[id$=boxAmount1]').val() == parseFloat($('[id$=boxAmount1]').val().toFixed(2));
…但这也失败了(输入“10.5”和退出/模糊并没有像我希望的那样将“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));
});
jQuery方法省去了单独查看每个输入的麻烦

在字符串前面加一个加号(+)会将其强制为一个数字,因此不需要使用
parseFloat


为了能够将此应用于所有文本输入(其他文本输入为空时不会产生负面影响),我必须将代码分成5个处理程序(除了原来的处理程序外):


Bonzo的插件时间到了?

你需要safari来支持你的页面吗?我想你的问题已经在这里提到并得到了回答:safari支持很好,但不是必需的。
!=''是冗余的,因为空字符串是错误的anyway@charlietfl:这是关于字符串比基尼的一种复杂的文字游戏吗?额外的调整将确保结果
=“NaN”
$('[id$=boxAmount1]').val(parseFloat($('[id$=boxAmount1]').val()).toFixed(2));
$(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));
});
/* 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));
});