2011-12-22 12 views
18

द्वारा फ़िल्टर कॉलम केवल खोज बार में दर्ज खोज शब्द में सटीक मिलान प्रदर्शित करने का प्रयास कर रहा है।jQuery डेटाटेबल्स - सटीक मिलान

उदाहरण के लिए, मेरे पास एक खोज बार है जो आईडी # द्वारा फ़िल्टर करता है। मैं केवल रिकॉर्ड्स चाहता हूं जो सटीक # प्रदर्शित करने के लिए दर्ज हों।

तो यदि 123 दर्ज किया गया है, तो मुझे प्रदर्शित होने के लिए 12345, 91239 इत्यादि नहीं चाहिए। केवल 123

अक्सर पूछे जाने वाले प्रश्न पृष्ठ पर bRegex के बारे में कुछ जानकारी देखी गई, लेकिन यह मेरे लिए काम नहीं कर रही है। कोई विचार?

उत्तर

20

ठीक है समस्या हल हो गई। हालांकि, चूंकि कॉलम मैं सटीक मिलान का उपयोग कर रहा हूं, कभी-कभी कॉमा द्वारा अलग किए गए एकाधिक आईडी #s होते हैं, इसलिए मैं सटीक मिलान खोज का उपयोग करने में सक्षम नहीं होता।

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

हाय महोदय, मुझे एक ही समस्या है। मैं सोच रहा था कि मैंने आपके द्वारा प्रदान किया गया कोड कहां रखना चाहिए? क्योंकि मैं इसे आजमा देना चाहता हूं अगर यह मेरी समस्या को भी हल करेगा। आशा है कि आप जवाब देंगे। – Louie

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

bSmart विकल्प का उपयोग करने और झूठे

करने के लिए इसे स्थापित करने के प्रलेखन से प्रयास करें

(पर करने के लिए शब्द मैच "जब" bSmart "DataTables यह बेहतर फ़िल्टरिंग तरीकों है का उपयोग करेगा डेटा में कोई भी बिंदु), जब झूठा यह नहीं होगा। " इस लिंक http://www.datatables.net/forums/discussion/4096/filtering-an-exact-match/p1

आप bSmart और bRegex स्तंभ प्रति सेट कर सकते हैं की तरह के रूप में अच्छी तरह से प्रति स्तंभ एक मैनुअल regex निर्दिष्ट करने के रूप में लग रहा है पर

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

:

अद्यतन

मैं इस पाया।

+0

नहीं काफी है कि मैं क्या देख रहा हूँ शुरू से ही आप इस कोड की कोशिश कर सकते हैं। तो मूल रूप से मेरे पास 3 कस्टम खोज फ़ील्ड हैं जिनका उपयोग मैं तालिका को फ़िल्टर करने के लिए करता हूं। मैं केवल एक फ़ील्ड को सटीक खोज का उपयोग करना चाहता हूं। अन्य क्षेत्रों के लिए, मैं चाहता हूं कि वे अभी भी स्मार्ट खोज का उपयोग करें। – JimmyJammed

+0

इसके अलावा एक साइड नोट पर, बीएसएमर्ट का मूल रूप से अर्थ है कि यदि मैं "जॉन स्मिथ" टाइप करता हूं, तो उन्हें उन शब्दों का कोई संयोजन मिलेगा (यानी "स्मिथ जॉन", "जॉन जैक स्मिथ" इत्यादि।) – JimmyJammed

+0

Ive अप मेरे उत्तर दिनांक –

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

कहाँ filter_value स्ट्रिंग फिल्टर फ़ील्ड में दर्ज किया है।

+1

कोई परिणाम नहीं लौटाया ...? – JimmyJammed

22

यह आप सटीक एक स्तंभ के लिए परिणाम दे देंगे:

लेकिन उन दिलचस्पी के लिए, यहाँ जवाब है।

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

यानी। खोज (इनपुट, regex, स्मार्ट, caseInsen)

-1

table.column (col_num)। खोज (filter_value + "$", सत्य, सत्य, झूठा)। ड्रा();

1

सटीक मिलान,

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

$ ('# फ़िल्टर्रो> वें: एनएच-चाइल्ड (2)> इनपुट') एक चयनकर्ता है – Tariq

संबंधित मुद्दे