2016-01-18 5 views
0

Все примеры, которые я видел, предназначались для сортировки таблиц с колонками только с номером.Сортировать таблицу по номерам, которые сопровождаются текстом?

Но я хочу, чтобы отсортировать столбец Цена этого вида таблицы:

<div id="main-table"> 
    <div class="wrap"> 
    <div class="table-wrapper tablesorter"> 
     <table border="1" class="fixed"> 
     <col style="width:100px;" /> 
     <col style="width:100px;" /> 
     <col style="width:100px;" /> 
     <col style="width:100px;" /> 
     <col style="width:100px;" /> 
     <col style="width:100px;" /> 
     <thead> 
      <tr> 
      <th>h1</th> 
      <th>h2</th> 
      <th>h3</th> 
      <th>Price</th> 
      <th>h5</th> 
      <th>h6</th> 
      </tr> 
     </thead> 
     <tbody> 
      <tr> 
      <td>a</td> 
      <td>700</td> 
      <td>c</td> 
      <td><span class="price">$75</span></td> 
      <td>d</td> 
      <td>e</td> 
      </tr> 
      <tr> 
      <td>a</td> 
      <td>20</td> 
      <td>c</td> 
      <td>Starting From <span class="price">$100</span></td> 
      <td>d</td> 
      <td>e</td> 
      </tr> 
      <tr> 
      <td>a</td> 
      <td>30</td> 
      <td>c</td> 
      <td>Today Only <span class="price">$50</span></td> 
      <td>d</td> 
      <td>e</td> 
      </tr> 
     </tbody> 
     </table> 
    </div> 
</div> 
</div> 

Это может иметь строку типа «Начиная с», «только сегодня» и т.д. Только модель является то, что значение, которое я буду хотите сортировать всегда будет $ знак рядом с ним.

Если нет простого способа сделать это, то я не против решения обходного решения, которое потребует, чтобы чистое значение цены появлялось в дополнительном месте, например <tr title="75"> или что-то еще, а затем сортировка таблицы по значению внутри title.

Я искал плагин tablesorter и не понимал документацию. Я предполагаю, что это возможно с помощью какой-либо функции извлечения текста, но я не знаю, как ее построить для этого случая.

Here's a fiddle with my table and the plugin.

(сейчас я отсортирован его в b колонке просто чтобы убедиться, что плагин на самом деле работает)

Кроме того, как избавиться от опции, которая дает зрителю сортировать таблицу любой заголовок, который он хочет позже? Мне просто нужна сортировка по умолчанию, при загрузке страницы, и все. не хотите, чтобы зритель изменял сортировку, но ничего не нашел в документации относительно того, как избавиться от тех стрелок, которые появляются внутри заголовков.

+0

Документы имеют примеры для пользовательских парсеров, а также параметры сортировки – charlietfl

+0

@charlietfl являются [этими] (http://tablesorter.com/docs/#Configuration) полными документами? Я не вижу, например, как я могу отключить пользователя от сортировки столбцов по своей воле. – rockyraw

ответ

1

Вы можете добавить свой собственный парсер. Перед тем, как позвонить tablesorter добавить

$.tablesorter.addParser({ 
    // set a unique id 
    id: 'money', 
    is: function(s) { 
     // return false so this parser is not auto detected 
     return false; 
    }, 
    format: function(s) { 
     var matches = /\$(\d+)/.exec(s); 
     return parseInt(matches ? matches[1] : 0); 
    }, 
    // set type, either numeric or text 
    type: 'numeric' 
}); 

Затем в tablesorter опции, обновление headers параметров так, что он использует money сортировщик для столбца 3, как:

headers: { 
    // set "sorter : false" (no quotes) to disable the column 
    0: { sorter: false }, 
    1: { sorter: false }, 
    2: { sorter: false }, 
    3: { 
     sorter: "money" // for column 3 use the custom 'money' parser 
    }, 
    4: { sorter: false }, 
    5: { sorter: false } 

}, 

Это будет использовать свой собственный сортировщик. Я создал регулярное выражение для поиска первой записи $ #### (знак доллара, за которым следует цифра). Если формат номера более сложный, вы можете настроить регулярное выражение.

+0

Спасибо! оно работает. Однако вы знаете, как отключить опцию пользователя для сортировки столбцов по его собственной воле? – rockyraw

+0

Я обновил свой ответ, чтобы отключить сортировку по всем остальным столбцам. Если вы хотите, чтобы таблица не сортировалась вообще (кроме случаев, когда вы ее визуализируете), вам, вероятно, не нужен этот причудливый плагин 'tablesorter'. –

+0

Спасибо. хорошо, есть ли какой-нибудь фрагмент кода, который позволит мне получить те же результаты без этого плагина? как вы сказали, я не хочу, чтобы она была сортируемой вообще, кроме как при рендеринге. – rockyraw

Смежные вопросы