jQuery DataTables-filtrer la colonne par correspondance exacte

essayer de n'afficher que les correspondances exactes au terme de recherche entré dans la barre de recherche.

Par exemple, j'ai une barre de recherche qui filtre par ID#. Je ne veux que les enregistrements qui correspondent exactement au # entré à afficher.

si 123 est entré, je ne veux pas 12345,91239, etc etc à afficher. Seulement 123.

Vu quelques infos sur bRegex sur la page FAQ, mais ça ne marche pas pour moi. Des idées?

22
demandé sur Gyrocode.com 2011-12-23 00:50:53

8 réponses

ceci vous donnera le résultat exact pour une colonne.

 table.column(i)
 .search("^" + $(this).val() + "$", true, false, true)
 .draw();

ie . recherche( entrée , regex, smart , caseInsen )

31
répondu Neeno Xavier 2014-05-29 10:44:18

Ok résolu le problème. Cependant, comme la colonne sur laquelle j'utilise la correspondance exacte contient parfois plusieurs ID #s séparés par des virgules, Je ne serai pas en mesure d'utiliser une recherche de correspondance exacte.

Mais pour ceux qui sont intéressés, voici la réponse:

oTable.fnFilter( "^"+TERM+"$", COLUMN , true); //Term, Column #, RegExp Filter
22
répondu JimmyJammed 2011-12-22 22:06:39
$(document).ready( function() {
    $('#example').dataTable( {
        "oSearch": {"bSmart": false}
    } );
} )

essayez d'utiliser l'option bSmart et mettez-la à false

à Partir de la documentation

" quand les DataTables "bSmart" utiliseront ses méthodes intelligentes de filtrage (pour à n'importe quel moment dans les données), quand faux ce ne sera pas faire."

UPDATE

j'ai trouvé ceci:

oSettings.aoPreSearchCols[ iCol ].sSearch = "^\s*"+'1'+"\s*$";
oSettings.aoPreSearchCols[ iCol ].bRegex = false;
oSettings.aoPreSearchCols[ iCol ].bSmart= false;

sur ce lien http://www.datatables.net/forums/discussion/4096/filtering-an-exact-match/p1

ressemble, vous pouvez définir bSmart et bRegex par colonne ainsi que la spécification d'un manuel de regex par colonne.

8
répondu Keith.Abramo 2015-03-31 11:47:48

Si vous voulez la correspondance exacte du début, vous pouvez essayer ce code,

    var table = $('#myTable').DataTable()
    $('#filterrow > th:nth-child(2) > input').on( 'keyup change', function () {
        table
        .column( $(this).parent().index()+':visible' )
        .search( "^" + this.value, true, false, true )
        .draw();
    } );
2
répondu Tariq 2017-11-07 08:01:56

les versions actuelles des datables prennent en charge l'utilisation de la correspondance exacte réelle sur la base d'une colonne.

table.column(i)
.search($(this).val(), false, false, false)
.draw();

documentation explique chaque drapeau.

1
répondu Alejandro Marin 2018-03-28 23:11:29
$(document).ready(function() {
    tbl = $('#example').dataTable();
    tbl.fnFilter("^" + filter_value + "$");
});

filter_value est la chaîne entrée dans le champ filter.

0
répondu matino 2011-12-22 21:02:02

Vous pouvez utiliser une expression régulière pour la correspondance exacte de la manière suivante:

var table = $('#dt').DataTable();

$('#column3_search').on('keyup', function () {
    // Note: column() accepts zero-based index meaning the index of first column is 0, second column is 1 and so on.
    // We use `2` here as we are accessing 3rd column whose index is 2.
    table.column(2)
         .search("^" + this.value + "$", true, false, true)
         .draw();
});

la syntaxe du search fonction:

rechercher(entrée, regex, smart_search, case_insensitive)

désactiver recherche intelligente dans ce cas, parce que search la fonction utilise l'expression régulière en interne quand recherche intelligente est réglé à true. Sinon, cela crée un conflit entre notre expression régulière et celui qui est utilisé par search fonction.

pour plus d'information, consultez la documentation suivante de DataTable:

colonne().recherche()

j'Espère que c'est utile!

0
répondu Wolverine 2018-08-09 22:29:08

tableau.la colonne(col_num).recherche (filter_value +"$", true, true, false).dessiner();

-1
répondu Benjie T 2017-05-22 06:42:22