2015-03-16 2 views
0

Мои данные действовали классно и все, пока я не изменил целочисленный элемент определенного столбца (с гиперссылками) на IP-адреса. Внезапно сортировка показалась странной.Сортировка данных с IP-адресами и гиперссылками

Перед тем, как что-то вроде этого:

<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"> 
<script type="text/javascript" src="includes/js/jquery.js"></script> 
<script type="text/javascript" src="includes/js/jquery.dataTables.js"></script> 
<script type="text/javascript" charset="utf-8"> 
jQuery.fn.dataTableExt.oSort['intComparer-asc'] = function (a, b) { 
    var m = a.match(/^\<.*\>(\d+)\<.*\>/); 
    a = m[1]; 
    var m = b.match(/^\<.*\>(\d+)\<.*\>/); 
    b = m[1]; 
    var value1 = parseInt(a); 
    var value2 = parseInt(b); 
    return ((value1 < value2) ? -1 : ((value1 > value2) ? 1 : 0)); 
}; 

jQuery.fn.dataTableExt.oSort['intComparer-desc'] = function (a, b) { 
    var m = a.match(/^\<.*\>(\d+)\<.*\>/); 
    a = m[1]; 
    var m = b.match(/^\<.*\>(\d+)\<.*\>/); 
    b = m[1]; 
    var value1 = parseInt(a); 
    var value2 = parseInt(b); 
    return ((value1 < value2) ? 1 : ((value1 > value2) ? -1 : 0)); 
}; 

$(document).ready(function() { 
     $('#tableAsI').dataTable({ 
      'aoColumnDefs': [ 
       { 'sType': 'intComparer', 'aTargets': [ 0, 1 ] } 
      ] 
     }); 
    }); 
</script> 


<table class="table" id="tableAsI"> 
<thead> <tr class="infoo"> <th>N</th> <th>IP</th> </tr> </thead> 
    <tbody> 

    <?php 
    echo '<tr><td>2</td>'; 
    echo '<td ><a href="index2.php" title="2">13</a></td>'; 
    echo'</tr>'; 
    echo '<tr> <td>4</td>'; 
    echo '<td ><a href="index4.php" title="4">1</a></td>'; 
    echo'</tr>'; 
    echo '<tr><td>1</td>'; 
    echo '<td ><a href="index1.php" title="1">2</a></td>'; 
    echo'</tr>'; 
    echo '<tr><td>3</td>'; 
    echo '<td ><a href="index3.php" title="3">20</a></td>'; 
    echo'</tr>'; 

    ?> 

    </tbody> 
</table> 

И сортировка работает хорошо, но после добавления IP-адресов у меня есть это, например:

<td ><a href="index3.php" title="3">100.130.6.109</a></td> 

и результат:

100.130.6.109 
**100.130.6.11** 
100.130.6.110 
100.130.6.111 

Что я хочу:

**100.130.6.11** 
100.130.6.109 
100.130.6.110 
100.130.6.111 

Спасибо.

ответ

0

Как насчет использования этого плагина (или кода из него в случае дополнительной поддержки ссылок)? https://datatables.net/plug-ins/sorting/ip-address

Плагин использует подобный код:

var m = a.split("."), x = ""; 

Но, потому что у вас также есть гиперссылки, с небольшой помощью JQuery, вы можете легко разобрать и извлечь содержимое ссылки. Например:

$('<a href="index3.php" title="3">100.130.6.109</a>').html(); 

Это даст вам 100.130.6.109 точно. Таким образом, небольшая модификация кода плагина будет выглядеть так:

jQuery.extend(jQuery.fn.dataTableExt.oSort, { 
    "ip-address-pre": function(a) { 
     var ip_address = $(a).html(); 
     var m = ip_address.split("."), x = ""; 
... 
Смежные вопросы