jQuery DataTables: consente di filtrare la colonna in base alla corrispondenza esatta

Cercando di visualizzare solo corrispondenze esatte con il termine di ricerca inserito nella barra di ricerca.

Ad esempio, ho una barra di ricerca che filtra per ID #. Voglio solo i record che corrispondono al numero esatto inserito per la visualizzazione.

Quindi se 123 viene inserito, non voglio che vengano visualizzati 12345 , 91239 , ecc. Solo 123 .

bRegex visto alcune informazioni su bRegex nella pagina delle FAQ, ma non funziona per me. Qualche idea?

Questo ti darà il risultato esatto per una colonna.

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

cioè. ricerca (input, regex, smart, caseInsen)

Ok, hai risolto il problema. Tuttavia, poiché la colonna in cui sto utilizzando la corrispondenza esatta a volte contiene più ID # separati da virgole, non sarò in grado di utilizzare una ricerca esatta della corrispondenza.

Ma per chi è interessato, ecco la risposta:

 oTable.fnFilter( "^"+TERM+"$", COLUMN , true); //Term, Column #, RegExp Filter 
 $(document).ready( function() { $('#example').dataTable( { "oSearch": {"bSmart": false} } ); } ) 

Prova a usare l’opzione bSmart e impostala su false

Dalla documentazione

“Quando” bSmart “DataTables userà i suoi metodi di filtraggio intelligente (per abbinare le parole in qualsiasi punto dei dati), quando falso non sarà fatto.”

AGGIORNARE

Ho trovato questo:

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

a questo link http://www.datatables.net/forums/discussion/4096/filtering-an-exact-match/p1

sembra che tu possa impostare bSmart e bRegex per colonna e specificare una regex manuale per colonna.

Se vuoi la corrispondenza esatta dall’inizio puoi provare questo codice,

  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(); } ); 

Le attuali versioni di Datatables supportano l’utilizzo della corrispondenza esatta esatta su base colonna.

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

La documentazione spiega ogni bandiera.

 $(document).ready(function() { tbl = $('#example').dataTable(); tbl.fnFilter("^" + filter_value + "$"); }); 

Dove filter_value è la stringa immessa nel campo filtro.

Puoi usare espressioni regolari per la corrispondenza esatta come segue:

 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 syntax della funzione di search è:

ricerca (input, regex, smart_search, case_insensitive)

Disabilitiamo la ricerca intelligente in questo caso perché search funzione di search utilizza l’espressione regolare internamente quando la ricerca intelligente è impostata su true. In caso contrario, si crea un conflitto tra la nostra espressione regolare e quella utilizzata dalla funzione di search .

Per ulteriori informazioni, consultare la seguente documentazione da DataTable :

colonna (). search ()

Spero sia utile!

table.column (col_num) .search (filter_value + “$”, true, true, false) .draw ();