gpt4 book ai didi

jQuery-Datatables-parseFloat 函数全局化

转载 作者:行者123 更新时间:2023-12-01 05:15:00 25 4
gpt4 key购买 nike

我正在使用 jQuery 数据表来显示十进制值的百分比,例如

  • 28.33
  • 91.58
  • 0.65
  • 我使用这些值的 parseFloat 对它们进行排序。问题出现在国际化过程中,在法语、德语中这些值表示为

  • 28,33
  • 91,58
  • 0.65
  • parseFloat 函数忽略 , 并仅显示数字部分。所以 28,33 显示为 28 并且91,58 显示为 91 并且很快..我需要保留逗号并对表格进行排序。如果我删除 parsefloat,它就不会排序。如果我将 , 替换为 .它有效,但我需要有一个逗号。如果有人建议我解决这个问题,那将会很有帮助。

    代码片段

        $.ajax({
    dataType : "json",
    url : myURL,
    data : aoData,
    cache : false,
    success : function(json) {
    var settings = {
    tableSelector: getTableSelector(tab),
    tableContainer : tab,
    aaData : json.aaData,
    iDisplayLength: 10,
    bProcessing: false,
    oLanguage : {
    sEmptyTable: json.emptyTableMessage,
    oPaginate: DataTablesUtils.getPaginationControls()
    },
    fnPreDrawCallback: function() {
    resetArrowButtons(tab);
    },
    fnDrawCallback: function(oSettings) {
    attachTableBodyEventListeners(tab);
    DataTablesUtils.togglePaginationControls(oSettings, json.aaData.length);
    },
    fnInitComplete: function (oSettings) {
    hideLoader(tab);
    showTable(tableSelector);
    showFilterBtn(tab);
    },
    aoColumns: columnRender(tab),
    bSort : true,
    aaSorting: []
    };

    var pagination = new DatatablesPagination(settings);
    pagination.display();
    },
    error : function() {
    showErrorMessageDetail(tab);
    }
    });




    function columnRender(tab) {
    return [{
    // Column1
    "sWidth" : "50px",
    "bSortable" : true,
    "fnRender": function(oObj) {
    return getColumnIcon(oObj.aData[0]);
    }
    }, {
    // Percentage %
    "sWidth" : "90px",
    "bSortable" : true,
    "sType": "numeric",
    "fnRender" : function(oObj) {
    return showValueOrDash(oObj.aData[1]);
    }
    }];
    }


    function showValueOrDash(value) {
    return value ? parseFloat(value) : " - ";
    }

    最佳答案

    必须使用旧版渲染函数吗? DataTables 1.10 及更高版本有 render methods with different signatures您可以使用它轻松解决此问题。看着legacy documentation为此,我不确定它是否支持任何不同的签名。

    在以后的版本中,您可以定义渲染函数以使用国际版本文本进行显示,但使用可排序的 parseFloat 版本进行排序。

    类似这样的事情

    //columns object
    [{
    "sWidth" : "90px",
    "bSortable" : true,
    "sType": "numeric",
    "render": function (data, type, row) {return renderData(data, type, row); }
    }]
    //render function for the above column
    function renderData(data, type, row){
    if(type = "display"){
    //return the unmodified data, or - if it is falsey
    return data ? data : "-";
    }
    else{
    //replace commas with periods, then parseFloat to sort the data
    return parseFloat(data.replace(",", "."));
    }
    }

    关于jQuery-Datatables-parseFloat 函数全局化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50390439/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com