Essayer d'afficher uniquement les correspondances exactes avec le terme de recherche entré dans la barre de recherche.
Par exemple, j'ai une barre de recherche qui filtre par ID #. Je souhaite que seuls les enregistrements qui correspondent au nombre exact entré s'affichent.
Donc si 123
est entré, je ne veux pas 12345
, 91239
, etc etc à afficher. Seulement 123
.
J'ai vu quelques informations sur bRegex
sur la page FAQ, mais ça ne marche pas pour moi. Des idées?
Ok a résolu le problème. Cependant, étant donné que la colonne sur laquelle j'utilise la correspondance exacte contient parfois plusieurs ID # séparés par des virgules, je ne pourrai pas 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
Cela vous donnera le résultat exact pour une colonne.
table.column(i)
.search("^" + $(this).val() + "$", true, false, true)
.draw();
c'est à dire . recherche (entrée, regex, smart, caseInsen)
$(document).ready( function() {
$('#example').dataTable( {
"oSearch": {"bSmart": false}
} );
} )
Essayez d'utiliser l'option bSmart et de la définir sur false
À partir de la documentation
"Lorsque" bSmart "DataTables utilisera ses méthodes de filtrage intelligentes (pour correspondre à Word à tout moment dans les données), si faux, cela ne sera pas fait."
MISE À JOUR
J'ai trouvé ça:
oSettings.aoPreSearchCols[ iCol ].sSearch = "^\\s*"+'1'+"\\s*$";
oSettings.aoPreSearchCols[ iCol ].bRegex = false;
oSettings.aoPreSearchCols[ iCol ].bSmart= false;
à ce lien http://www.datatables.net/forums/discussion/4096/filtering-an-exact-match/p1
il semble que vous pouvez définir bSmart
et bRegex
par colonne ainsi que spécifier une expression régulière manuelle par colonne.
Si vous voulez la correspondance exacte depuis le 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();
} );
Vous pouvez utiliser une expression régulière pour une correspondance exacte comme suit:
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 de la fonction search
est:
recherche (entrée, expression rationnelle, recherche_ intelligente, sensible à la casse)
Nous désactivons la recherche intelligente dans ce cas, car la fonction search
utilise une expression régulière en interne lorsque la recherche intelligente est défini sur true. Sinon, cela crée un conflit entre notre expression régulière et celle qui est utilisée par la fonction search
.
Pour plus d'informations, consultez la documentation suivante de DataTable :
J'espère que c'est utile!
$(document).ready(function() {
tbl = $('#example').dataTable();
tbl.fnFilter("^" + filter_value + "$");
});
Où filter_value
est la chaîne entrée dans le champ de filtre.
Les versions actuelles de Datatables prennent en charge l'utilisation d'une correspondance exacte réelle sur une base de colonnes.
table.column(i)
.search($(this).val(), false, false, false)
.draw();
Le documentation explique chaque drapeau.