2011-12-22 24 views
18

Cố gắng chỉ hiển thị kết quả khớp chính xác với cụm từ tìm kiếm được nhập trong thanh tìm kiếm.Biểu dữ liệu jQuery - Cột bộ lọc theo đối sánh chính xác

Ví dụ: tôi có thanh tìm kiếm lọc theo ID #. Tôi chỉ muốn các bản ghi khớp chính xáC# được nhập để hiển thị.

Vì vậy, nếu 123 được nhập, tôi không muốn 12345, 91239, v.v ... sẽ được hiển thị. Chỉ 123.

Đã xem một số thông tin về bRegex trên trang Câu hỏi thường gặp, nhưng nó không hoạt động đối với tôi. Bất kỳ ý tưởng?

Trả lời

20

Ok đã giải quyết được sự cố. Tuy nhiên, vì cột tôi đang sử dụng kết hợp chính xác trên đôi khi chứa nhiều ID # được phân tách bằng dấu phẩy, tôi sẽ không thể sử dụng tìm kiếm đối sánh chính xác.

Nhưng đối với những người quan tâm, đây là câu trả lời:

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

Xin chào, tôi đang gặp vấn đề tương tự. Tôi đã tự hỏi nơi tôi nên đặt mã bạn cung cấp? Bởi vì tôi muốn thử nó nếu nó sẽ giải quyết vấn đề của tôi quá. Hy vọng bạn sẽ trả lời. – Louie

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

Hãy thử sử dụng các tùy chọn bSmart và đặt nó là false

Từ các tài liệu

"Khi "bSmart" DataTables sẽ sử dụng nó là phương pháp lọc thông minh (để từ trận đấu tại bất kỳ điểm nào trong dữ liệu), khi sai số này sẽ không được thực hiện là . "

CẬP NHẬT

Tôi thấy điều này:

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

tại liên kết này http://www.datatables.net/forums/discussion/4096/filtering-an-exact-match/p1

vẻ như bạn có thể thiết lập bSmartbRegex mỗi cột cũng như xác định một regex thủ công mỗi cột.

+0

Không hẳn những gì tôi đang tìm kiếm. Vì vậy, về cơ bản tôi có 3 trường tìm kiếm tùy chỉnh mà tôi sử dụng để lọc bảng. Tôi chỉ muốn một trong các trường sử dụng tìm kiếm chính xác. Đối với các trường khác, tôi muốn họ vẫn sử dụng tìm kiếm thông minh. – JimmyJammed

+0

Ngoài ra trên một mặt lưu ý, bSmart về cơ bản có nghĩa là nếu tôi nhập vào "John Smith", nó sẽ tìm thấy bất kỳ kết hợp nào của những từ đó (ví dụ: "Smith John", "John Jack Smith", v.v.) – JimmyJammed

+0

Tôi đã trả lời câu trả lời của tôi –

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

Trường hợp filter_value là chuỗi được nhập vào trường bộ lọc.

+1

Không trả lại bất kỳ kết quả nào ...? – JimmyJammed

22

này sẽ cung cấp cho bạn chính xác kết quả cho một cột.

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

ie. tìm kiếm (input, regex, smart, caseInsen)

-1

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

1

Nếu bạn muốn kết hợp chính xác ngay từ đầu bạn có thể thử mã này,

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)> đầu vào') là bộ chọn – Tariq

Các vấn đề liên quan