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?
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 )
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
$(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.
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();
} );
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.
$(document).ready(function() {
tbl = $('#example').dataTable();
tbl.fnFilter("^" + filter_value + "$");
});
Où filter_value
est la chaîne entrée dans le champ filter.
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:
j'Espère que c'est utile!
tableau.la colonne(col_num).recherche (filter_value +"$", true, true, false).dessiner();