【问题标题】:Put decimal places on parse json data and display inside modal input在解析 json 数据上放置小数位并在模态输入中显示
【发布时间】:2021-01-10 15:19:39
【问题描述】:

为什么我不能显示小计和应付金额总和的乘积到小数点后两位?当我在末尾添加toFixed(2) 时,它会给我这样的错误:

未捕获的类型错误:modal.find(...).val(...).toFixed 不是函数。

function view_sales(sales_id) {
    var modal = $('#sales-modal');
    $.ajax({
        type: 'POST', 
        url: url + 'GetSalesById', 
        data: { sales_id : sales_id }, 
        dataType: 'json',
        success: function (data) {
            modal.modal({ backdrop: 'static', keyboard: false});
            modal.find($('#sales_id')).val(sales_id);
            modal.find($('#sales_po')).val(data.sales_po);
            modal.find($('#sales_so')).val(data.sales_so);
            modal.find($('#sales_dr')).val(data.sales_dr);
            modal.find($('#sales_si')).val(data.sales_si);
            modal.find($('#sales_particulars')).val(data.sales_particular);
            modal.find($('#sales_media')).val(data.sales_media);
            modal.find($('#sales_width')).val(data.sales_width);
            modal.find($('#sales_height')).val(data.sales_height);
            modal.find($('#sales_unit')).val(data.sales_unit);
            modal.find($('#sales_total_area')).val(data.sales_total_area);
            modal.find($('#sales_price_unit')).val(data.sales_price_unit);
            modal.find($('#sales_sub_total')).val(parseFloat(data.sales_total_area) * parseFloat(data.sales_price_unit)).toFixed(2);
            modal.find($('#sales_qty')).val(data.sales_qty);
            modal.find($('#sales_total')).val(data.sales_total);
            modal.find($('#sales_vat')).val(data.sales_vat);
            modal.find($('#sales_amount_due')).val(parseFloat(data.sales_total) + parseFloat(data.sales_vat)).toFixed(2);
            modal.find($('#sales_discount')).val(data.sales_discount);
            modal.find($('#sales_net_amount')).val(data.sales_net_amount);
            $('#modal-title').html('<i class="icon-add-to-list mr-2"></i>&nbsp; UPDATE SALES DETAILS');
            $('#btn-sales').html('Save Changes <i class="icon-arrow-right14 position-right"></i>').attr('disabled',false);
        }
    });
}

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    您正试图在字符串上调用toFixed,因为val 方法返回字符串。

    你必须调用 toFixed 这样的数字值:

    modal.find($('#sales_sub_total')).val((parseFloat(data.sales_total_area) * parseFloat(data.sales_price_unit)).toFixed(2));
    modal.find($('#sales_amount_due')).val((parseFloat(data.sales_total) + parseFloat(data.sales_vat)).toFixed(2));
    

    【讨论】:

      【解决方案2】:

      首先请注意,您应该为find() 提供一个字符串选择器,而不是一个jQuery 对象。后者使find() 操作变得多余:

      modal.find('#sales_id').val(sales_id);
      modal.find('#sales_po').val(data.sales_po);
      // and so on...
      

      关于您的实际问题,val() 返回一个字符串。您不能在字符串上调用 toFixed()。即使可以,您也需要在提供给方法的参数上调用 toFixed(),而不是函数调用的 result

      因此,要解决您的问题,请将计算括在括号中以对其进行分组,然后将 toFixed() 放在上面:

      modal.find('#sales_sub_total').val((parseFloat(data.sales_total_area) * parseFloat(data.sales_price_unit).toFixed(2));
      
      modal.find('#sales_amount_due').val((parseFloat(data.sales_total) + parseFloat(data.sales_vat).toFixed(2));
      

      【讨论】:

        猜你喜欢
        • 2015-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-01
        • 2019-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多