سؤال

لقد كنت أحاول أيام الآن للحصول على jQuery tollerwer المرتاف الصحيح في عمود الجدول الخاص بي.

أنا أستخدم أحدث الإصدارات الحالية من كلا النصين.

يتم تقديم الجدول بشكل جيد، ولكن فرز الأرقام لا يعمل بشكل صحيح.

عندما قمت بفرز عمود عدد، فإنه يعطيني النتائج التالية:

8 7 4 32 31 3 إلخ ..

حيث تتوقع: 32 31 8 إلخ ...

قرأت بعض التعليقات على إضافة رمز جافا سكريبت إضافي ولكن لا يمكنني العثور على أي أمثلة جافا سكريبت جيدة.

JQuery أنا أستخدم الآن هو كما يلي:

$(document).ready(function()
    {
      $("#table1")
       .tablesorter(
          {
            sortList: [[0,0]],
            widthFixed: true,
            widgets: ['zebra']
          } )
    }
);

هنا هو بلدي HTML:

<table id="table1" class=tablesorter>
    <thead>
        <tr>
            <th width=65>Name</th>
            <th width=40>Count</th>
        </tr>
     </thead>
     <tbody>
         <tr><td>Name_1</td><td>32</td></tr>
         <tr><td>Name_2</td><td>12</td></tr>
         <tr><td>Name_3</td><td>11</td></tr>
         <tr><td>name_4</td><td>14</td></tr>
         <tr><td>Name_5</td><td>7</td></tr>
         <tr><td>Name_6</td><td>3</td></tr>
         <tr><td>Name_7</td><td>32</td></tr>
         <tr><td>Name_8</td><td>31</td></tr>
         <tr><td>Name_9</td><td>35</td></tr>
      </tbody>
</table>
هل كانت مفيدة؟

المحلول 2

<th width=110 class=\"{sorter: 'digit'}\">Count</th>

هذا حل المشكلة. إخبار JavaScript لمعالجة القيمة كرقم جعل عمل الفرز صحيح. لا تزال BIT سخيفة لا يتم فحص قيم الأرقام في البرنامج النصي على أنه أرقام. ولكن أعتقد أن هناك غرض أعلى لذلك في النهاية.

شكرا كلا على وقتك والمساعدة

/ fons.

نصائح أخرى

نأمل أن يساعد ذلك شخصا ما إذا وجدوا هذا المنشور، في TableDARD يمكنك الآن استخدامها الآن.

$(".table").tablesorter({
     headers: {
         5: { sorter: 'digit' } // column number, type
     }
 });

قد يكون هذا واضحا للآخرين (ليس لي) ولكن للحصول على الحل الذي يعمل مع {فارز: "أرقام" الوصف الأول تحتاج إلى استخدام مسج البيانات البرنامج المساعد.

أعلم أن هذا سؤال قديم، لكنني صادفت نفس المشكلة وبدلا من تجربة أي حل نشر هنا، يجب عليك أولا التحقق من إصدار البرنامج المساعد الخاص بك. تم حل كل مشكلة عندما اكتشفت أنني لم أستخدم أحدث إصدار (2.0.5)

يبدو أنك بحاجة إلى لوحة أرقامك. وهذا ما يفسر لماذا يطلب 8 و 7 و 4 قبل 32 و 31.

جرب هذا:

function padLeft(s,len,c){
  c=c || '0';
  while(s.length< len) s= c+s;
  return s;
}

$("table").tablesorter({
  textExtraction: function(node) {         
    return padLeft(node.innerHTML,2);
  } 
});

استخدم قيمة أعلى من 2 إذا كنت بحاجة إلى فرز الأرقام الكبيرة.

قد تحاول ذلك أيضا:

$(document).ready(function() { 
    $("table").tablesorter({ 
        // put other options here ...
        textExtraction: function(node) {  
            return parseInt($(node).text()); 
        } 
    }); 
});

... هذا يعامل محتوى الخلايا الفرز كعضوية، بعد استخراج النص فقط.

يمكنك إظهار أتش تي أم أل كذلك؟ يجب اكتشاف TILLILLESTARD والتعامل مع الفرز الرقمي دون أي خيارات خاصة. هل من الممكن أن تكون قيمك الرقمية محاطة HTML؟ في هذه الحالة قد تحتاج إلى طريقة مخصصة لاستخراج القيم من HTML.

مثال من الرابط المشار إليه:

$(document).ready(function() { 

    // call the tablesorter plugin 
    $("table").tablesorter({ 
        // define a custom text extraction function 
        textExtraction: function(node) { 
            // extract data from markup and return it  
            return node.childNodes[0].childNodes[0].innerHTML; 
        } 
    }); 
});

البحث في الرمز jQuery.tablesorter.js:

this.isDigit = function(s,config) {

    var DECIMAL = '\\' + config.decimal;
    var exp = '/(^[+]?0(' + DECIMAL +'0+)?$)|(^([-+]?[1-9][0-9]*)$)|(^([-+]?((0?|[1-9][0-9]*)' + DECIMAL +'(0*[1-9][0-9]*)))$)|(^[-+]?[1-9]+[0-9]*' + DECIMAL +'0+$)/';

    return RegExp(exp).test($.trim(s));
};

واستبدالها مع:

this.isDigit = function(s,config) {

    var DECIMAL = '\\' + config.decimal;
    var exp = '/(^[+]?0(' + DECIMAL +'0+)?$)|(^([-+]?[1-9][0-9]*)$)|(^([-+]?((0?|[1-9][0-9]*)' + DECIMAL +'(0*[1-9][0-9]*)))$)|(^[-+]?[1-9]+[0-9]*' + DECIMAL +'0+$)/';

    //return RegExp(exp).test($.trim(s));
    return !isNaN(parseFloat($.trim(s))) && isFinite($.trim(s));
};
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top