【问题标题】:AutoNumeric change valueAutoNumeric 更改值
【发布时间】:2019-08-01 01:08:42
【问题描述】:

我试图让我的价值拥有千位分隔符等,但我不明白如何使用 jquery 以及它是如何工作的。

我想让我的价值从 1000 到 1000

我尝试像这样使用 AutoNumeric 但失败了

var autonumeric = new AutoNumeric.multiple(".form-control");

这是我要更改值类型的表单:

<div class="form-group">
    <div class="row">
        <div class="col-lg-3">
            <label for="total" class="label-control" id="labelsubtotal">Total : </label>
        </div>
        <div class="col-lg-9">
            <input type="text" value="" style="text-align: right;" class="form-control" id="grandTotal" name="grandTotal" disabled>
        </div> 
    </div>
</div>

这就是我导入 AutoNumeric 的方式:

<script src="<?php echo base_url();?>js/autonumeric-next/src/AutoNumeric.js" type="text/javascript"></script>

基本上这就是我想要做的:

我想把结果格式改成货币格式

我只成功更改了 1 个值,这就是我所做的:

<script>
$('document').ready(function(){

$(function sum() {
    console.log($('.calc'))
    var sum = 0.0;
    $('.calc').each(function() {
        sum += parseInt($(this).text());
    });
    $("#subTotal").val(sum);
    let subTotal = new AutoNumeric("#subTotal");
})();

function calculateSubTotal() {
    var subtotal = $("#subTotal").val();
    $("#subTotalDiscount").val(subtotal - (Math.round(($("#inputDiscount").val() / 100) * subtotal)));
    var subtotal_discount = parseInt($("#subTotalDiscount").val());
    $("#subTotalTax").val(Math.round(($("#inputTax").val() / 100) * subtotal_discount));
    var subtotal_tax = parseInt($("#subTotalTax").val());
    var pph = $("#inputpph").val();
    $("#SubTotalpph").val(Math.round(parseInt($("#inputpph").val()*subtotal_discount)));
    var subtotal_pph = parseInt($("#SubTotalpph").val());
    var grandtotal = subtotal_discount + subtotal_tax + subtotal_pph;
    $("#grandTotal").val(grandtotal);
    }
})
</script>

我现在迷路了。

【问题讨论】:

  • 您的.float 输入具有disabled 属性。没事吧?
  • 嘿,我刚刚更新了我的问题,所以它有点详细,该表单只是输出我刚刚放入的 js 代码中发生的结果
  • 现在我不能改变我的#subTotalDiscount 的格式,如果我像#subTotal 那样做,值不会显示在我的本地主机中

标签: javascript jquery codeigniter


【解决方案1】:

还存在另一种方法。接下来看看你会得到什么(一个要求 - 你只需要给出数值):

JS

    $('#grandTotal').on('input',function(){

            var number, s_number, f_number;

            number  = $('#grandTotal').val();
            s_number = number.replace(/,/g,'');
            f_number = formatNumber(s_number);

            console.info(f_number);
            $('#grandTotal').val(f_number);
    }); 

function formatNumber(num) {
  return num.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')
}

但是,如果您只想转换值而不动态更改它,那么只需将其添加到您附加的*.js

var number, f_number;
    number  = $('#grandTotal').val(); 
    f_number = formatNumber(number);

    console.info(f_number);
    $('#grandTotal').val(f_number);

function formatNumber(num) {
  return num.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')
}

【讨论】:

  • AutoNumeric 的全部意义在于您不需要执行那些字符串替换功能。 AutoNumeric 应该透明地完成这一切,所以当它显示 1.456,99 €时,它在幕后交出了正确的值 1456.99 它曾经在 1.9.4 版本中运行得很好,之后他们改变了函数加载和工作的方式.我仍在尝试了解新方法,一旦弄清楚就会发布答案。文档中缺少有用的示例。
  • @Lufwaffle,只为这个常见的任务使用整个第三方 JS 库真是太有趣了。恕我直言,你根本不需要使用那个 JS 库。
  • 0 这取决于情况。如果您只有一个值要转换,那肯定没有意义。但是,如果您要处理一大堆需要来回转换的数字,那么使用 AutoNumeric 是非常有意义的。我已经成功地将它用于几个货币繁重的页面。在旧的化身中,您只需要声明一个类,就像魔术一样,这些数字会以正确的格式显示。当您处理多种货币和格式时,它非常有用,可以为您节省大量时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多