2016-06-03 2 views
1

Ich versuche, Moment-Plugin für Datatable mit lokalen Französisch zu verwenden. Und es funktioniert nicht, das Datumsfeld ist nicht als Datum, sondern als String sortiert. Was ich in der JavaConsole sehe, ist, dass in der fnSort-Funktion von Datatable die aSortData jedes Elements in aoData "17 Februar 2016 10:02:29" bleibt, anstatt in die zugehörige ganze Zahl umgewandelt zu werden. Ich habe zuerst mit einer lokalen c opy der verschiedenen Javascript-Dateien versucht, dann mit der Netzwerkversion, aber in beiden Fällen scheitert.Datum nicht zum Sortieren dekodiert (so als Zeichenfolge verwendet) mit datatablen Moment-mit-Locale

Hier ist mein Javascript-Code

<script src="./my_files/jquery-1.11.1.js" type="text/javascript"></script> 
<script type="text/javascript" charset="utf8" src="http://cdn.datatables.net/1.10.12/js/jquery.dataTables.js"></script> 
<script type="text/javascript" charset="utf8" src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment-with-locales.min.js"></script> 
<script type="text/javascript" charset="utf8" src="http://cdn.datatables.net/plug-ins/1.10.11/sorting/datetime-moment.js"></script> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $.fn.dataTable.moment('D MMMM YYYY hh:mm:ss', 'fr'); 
     $('#data-table-logs').DataTable(); 
    }); 
</script> 

und hier beispielsweise von Daten in meinem Tisch sind.

<tbody> 

    <tr> 
     <td>17 février 2016 10:02:29</td> 
     <td>5111</td> 
     <td>Jeromrm ghhh</td> 
     <td>Entrant</td> 
    </tr> 

    <tr> 
     <td>10 février 2016 12:02:10</td> 
     <td>5111</td> 
     <td>Jeromrm ghhh</td> 
     <td>Entrant</td> 
    </tr> 

    <tr> 
     <td>27 janvier 2016 16:01:17</td> 
     <td>5111</td> 
     <td>Jeromrm ghhh</td> 
     <td>Entrant</td> 
    </tr> 


    <tr> 
     <td>19 mai 2016 16:05:53</td> 
     <td>5411</td> 
     <td>jdsn Reference</td> 
     <td>Sortant</td> 
    </tr> 

    <tr> 
     <td>30 mars 2016 14:03:06</td> 
     <td>5111</td> 
     <td>Jeromrm ghhh</td> 
     <td>Sortant</td> 
    </tr> 

    <tr> 
     <td>14 mars 2016 12:03:27</td> 
     <td>5111</td> 
     <td>Jeromrm ghhh</td> 
     <td>Sortant</td> 
    </tr> 

Es scheint mir, dass ich voll und ganz das Verfahren von https://datatables.net/blog/2014-12-18 der Ausnahme, dass ich Zeit-mit-locale verwendet haben, statt Moment.

Hat jemand eine Idee zu diesem Thema?

Dies ist die vollständige HTML-

<meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <title>My Site</title> 


    <script src="http://code.jquery.com/jquery-1.11.1.js" type="text/javascript"></script> 
    <link rel="stylesheet" type="text/css" href="http://cdn.datatables.net/1.10.12/css/jquery.dataTables.css"> 
    <script type="text/javascript" charset="utf8" src="http://cdn.datatables.net/1.10.12/js/jquery.dataTables.js"></script> 
    <script type="text/javascript" charset="utf8" src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment-with-locales.min.js"></script> 
    <script type="text/javascript" charset="utf8" src="http://cdn.datatables.net/plug-ins/1.10.11/sorting/datetime-moment.js"></script> 

    <script type="text/javascript"> 
     $(document).ready(function() { 
      $.fn.dataTable.moment('D MMMM YYYY hh:mm:ss', 'fr'); 
      $('#data-table-logs').DataTable(); 
     }); 
    </script> 
</head> 
<body class=""> 
    <div class="container"> 
     <div class="main-content"> 
      <div class="row"> 
       <div id="main-content-block" class="col-xs-12"> 

        <div> 
         <table class="display" id="data-table-logs"> 
          <thead> 
           <tr> 
            <th>Durée de l'appel</th> 
            <th>Autre partie</th> 
            <th>Nom</th> 
            <th>Type d'appel</th> 
           </tr> 
          </thead> 
          <tbody> 
           <tr> 
            <td>17 février 2016 10:02:29</td> 
            <td>5111</td> 
            <td>Jeromrm ghhh</td> 
            <td>Entrant</td> 
           </tr> 
           <tr> 
            <td>10 février 2016 12:02:10</td> 
            <td>5111</td> 
            <td>Jeromrm ghhh</td> 
            <td>Entrant</td> 
           </tr> 
           <tr> 
            <td>27 janvier 2016 16:01:17</td> 
            <td>5111</td> 
            <td>Jeromrm ghhh</td> 
            <td>Entrant</td> 
           </tr> 
           <tr> 
            <td>19 mai 2016 16:05:53</td> 
            <td>5411</td> 
            <td>jdsn Reference</td> 
            <td>Sortant</td> 
           </tr> 
           <tr> 
            <td>30 mars 2016 14:03:06</td> 
            <td>5111</td> 
            <td>Jeromrm ghhh</td> 
            <td>Sortant</td> 
           </tr> 
           <tr> 
            <td>14 mars 2016 12:03:27</td> 
            <td>5111</td> 
            <td>Jeromrm ghhh</td> 
            <td>Sortant</td> 
           </tr> 
           <tr> 
            <td>19 février 2016 18:02:31</td> 
            <td>5111</td> 
            <td>Jeromrm ghhh</td> 
            <td>Sortant</td> 
           </tr> 
          </tbody> 
         </table> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 
</body> 

Vielen Dank im Voraus, Olivier

+0

Bitte geben Sie die vollständige

und gültige HTML, siehe https://validator.w3.org/check – YAMM

+0

Hier ist der vollständige HTML (wo ich alle nutzlosen Code für dieses Problem entfernt haben, die Seite wurde ursprünglich mit Django und generiert Ich habe es lokal mit Chrome gespeichert) .: – user3680154

Antwort

0

Damit dies funktioniert, werden alle Werte, die vom Format zur Verfügung gestellt parsable sein muss. Sie haben einen einfachen Fehler gemacht, nämlich dass Sie hh (Stunden einer 12-Stunden-Uhr) anstelle von HH (Stunden einer 24-Stunden-Uhr) haben. Da die Daten Stunden enthalten, die größer als 12 sind, stimmen sie nicht überein, und daher wird die gesamte Spalte als Zeichenfolge behandelt.

einfach Ihr Skript ändern:

$.fn.dataTable.moment('D MMMM YYYY hh:mm:ss', 'fr'); 

An:

$.fn.dataTable.moment('D MMMM YYYY HH:mm:ss', 'fr'); 

Siehe auch die working jsFiddle here.