2011-12-22 73 views
18

Intentando mostrar solo las coincidencias exactas con el término de búsqueda ingresado en la barra de búsqueda.jQuery DataTables - Filtre la columna por coincidencia exacta

Por ejemplo, tengo una barra de búsqueda que filtra por ID #. Solo quiero registros que coincidan con el # exacto ingresado para mostrar.

De modo que si se ingresa 123, no quiero que se muestren 12345, 91239, etc. Solo 123.

Vi alguna información sobre bRegex en la página de preguntas frecuentes, pero no funciona para mí. ¿Algunas ideas?

Respuesta

20

Ok, resolvió el problema. Sin embargo, dado que la columna en la que estoy usando la coincidencia exacta a veces contiene varios ID # separados por comas, no podré usar una búsqueda de coincidencia exacta.

Pero para los interesados, aquí está la respuesta:

oTable.fnFilter("^"+TERM+"$", COLUMN , true); //Term, Column #, RegExp Filter 
+0

Hola señor, estoy teniendo el mismo problema. Me preguntaba dónde debería colocar el código que me proporcionó. Porque quiero probarlo si también resolverá mi problema. Espero que respondas. – Louie

7
$(document).ready(function() { 
    $('#example').dataTable({ 
     "oSearch": {"bSmart": false} 
    }); 
}) 

Trate de usar la opción BSmart y se establece en false

De la documentación

"cuando "DataTables BSmart" usarán es métodos de filtrado inteligentes (a palabra partido en cualquier punto en los datos), cuando es falso esto no será hecho ".

ACTUALIZACIÓN

encontré esto:

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

en este enlace http://www.datatables.net/forums/discussion/4096/filtering-an-exact-match/p1

parece que se puede establecer bSmart y bRegex por columna, así como especificar una expresión regular manual de por columna.

+0

No es lo que estoy buscando. Básicamente, tengo 3 campos de búsqueda personalizados que utilizo para filtrar la tabla. Solo quiero que uno de los campos use una búsqueda exacta. Para los otros campos, quiero que sigan usando la búsqueda inteligente. – JimmyJammed

+0

También en una nota al margen, el bSmart básicamente significa que si escribo "John Smith", encontrará cualquier combinación de esas palabras (es decir, "Smith John", "John Jack Smith", etc., etc.) – JimmyJammed

+0

He actualizado mi respuesta –

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

Dónde filter_value es la cadena introducida en el campo de filtro.

+1

¿No devolvió ningún resultado ...? – JimmyJammed

22

Esto le dará resultado exacto de una columna.

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

ie. búsqueda (entrada, regex, inteligente, caseInsen)

-1

table.column (col_num) .search (value_filter + "$", true, true, false) .draw();

1

Si desea que la coincidencia exacta desde el principio puede probar este código,

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

$ ('# filterrow> th: nth-child (2)> input') es un selector – Tariq

Cuestiones relacionadas