【问题标题】:jQuery-Datatables-parseFloat function GlobalisationjQuery-Datatables-parseFloat 函数全球化
【发布时间】:2018-10-27 15:54:07
【问题描述】:

我正在使用 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) : " - ";
        }
    

    【问题讨论】:

    • 向我们展示您的尝试
    • @muecas 我真的不知道该怎么做。 jQuery 需要一个数字来排序,但我只能给出一个数字,中间有逗号(实际上不是数字)。
    • 为什么不给一个带点的数字?
    • @muecas 我们有一个大数据表,其中所有数据都是英文的。该网站的德国用户希望单独查看德语格式的数字(90,82 而不是 90.82)
    • 你能发布你的 DataTables js 初始化吗?

    标签: jquery datatables columnsorting


    【解决方案1】:

    您是否必须使用旧版渲染功能? 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(",", "."));
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多