2013-10-09 19 views
15

Aslında jQuery veri tabanı eklentisinde yeni.DOM Öğesinin Değiştirilmesi Veri kutusundaki arama kutusunun konumu

Bu kodu kullanarak bu yöntemi kullanarak eklentiyi tablolarıma iliştirdim.

$(document).ready(function() 

     $('#table_id').dataTable({ 

     }); 
}); 

Şimdi Benim istediğim datatables bizim filtre dizesi girdiğinizde sonuçlar süzülür elde edileceği bir metin kutusu sağlar olduğunu.

Bu amaçla mevcut tasarlanmış metin kutumu kullanmak istiyorum UI'ye yeni bir metin kutusu eklemek istemiyorum. Yani bu bağlantıyı

http://datatables.net/examples/basic_init/dom.html

geçirdi Ama Anlamıyorum. Mevcut metin kutusunu kullanmak mümkün mü? Bu yeni bir metin istemiyoruz arama için ekleniyor yeni metin kutusu eklentisi datatables uyguladığınızda

bu Şimdi

enter image description here

datatables uygulamadan önce böyle bir durum başlamıştı görün Lütfen tavsiye kutu Benim mevcut metin kutusunun arama işlevselliğini gerçekleştirmesini istiyorum.

.dataTables_filter input { 
    background: blue; 
} 

JavaScript

$(".dataTables_filter input").css({ "background" :"blue" }); 

ile konsola macun ile bu Deneyin:

+0

Varolan metin kutusunun filtrelemesini istemiyorsunuz? – Danny

+0

@Danny Varolan metin kutusunun işlevselliğini filtrelemesini istiyorum Ama yeni bir metin kutusu istemiyorum ...... Veri kutularını uygulamadan önce sahip olduğum metin kutusundaki arama işlevini kullanmak istiyorum. –

cevap

44

Bu çok basit. Kendi tasarlanmış arama kutusunun

.dataTables_filter { 
    display: none; 
} 

Örnek, HTML yere yerleştirilen: Öncelikle varsayılan arama kutusunu gizlemek zorundadır arama kutusuna yazarken/filtreyi arama

<input type="text" id="searchbox"> 

senaryoyu

$("#searchbox").keyup(function() { 
    dataTable.fnFilter(this.value); 
});  

çalışma demo ->http://jsfiddle.net/TbrtF/

Eğer istimal ederse

$("#searchbox").on("keyup search input paste cut", function() { 
    dataTable.search(this.value).draw(); 
}); 
+0

Teşekkür çalıştım ve demo için teşekkür ederim. + 1 sizin için. –

+0

Varsayılan arama kutusunu gizlemek yerine, veri tabanı yapıcısında bFilter: false değerini ayarlayarak tamamen kaldırabilirsiniz. DÜZENLEME: Özel arama kutularını da devre dışı bıraktı bu yüzden hiç işe yaramıyor ... –

+2

@SimonBengtsson, Yes, 'bFilter: false' filtreleme özelliklerini tamamen bastırır. – davidkonrad

1

Eğer css Dosya css

ile çok kolay arama girişinin stilini değiştirebilirsiniz.

6

diğer yanıtlar belirtildiği gibi css kullanabilirsiniz filtre seçeneklerini kaldırmak için veya kullandığınız datatable başlatılmasıyla içinde kaldırabilirsiniz::

$("#table").dataTable({"bFilter": false}); //disables filter input 

gibi gr DataTable 1.10 JS görünmelidir ya böyle sDom özelliğini kullanarak:

"sDom": '<"H"lr>t<"F"ip>' //when bJuery is true 

burada http://datatables.net/usage/options#sDom Diğer seçenekler için bkz.

Şimdi o zaman sadece bir keypress işleyicisi takmak ve bunun gibi fnFilter seçeneği kullanmak bir filtre kutusu olarak kendi metin alanını kullanarak ilgili:

$(document).ready(function() 

    oTable = $('#table_id').dataTable({ 
     "sDom": '<"H"lr>t<"F"ip>' 
    }); 
    $('#myInputTextField').keypress(function(){ 
     oTable.fnFilter($(this).val()); 
    }); 
}); 
+0

'" bFilter ": false', arama/filtre özelliklerini ** tamamen iptal eder *, sadece varsayılan arama kutusunu gizlemez - böylece hedefin filtre yeteneklerine sahip olduğu bir sorunun tek bir cevabıdır, sadece başka bir metinde Kutu. Ayrıca, 'sDom' bu bağlamda yararsız/alakasız - görünüşe göre sık sık söylenemez: 'sDom' ** dataTables oluşturulan elemanlar için sipariş ve pozisyon ayarlamak için, başka bir şey **! – davidkonrad

+0

Evet, bFilter hakkında haklısınız, cevabımda, işlevin devre dışı bırakıldığını kaydettim. Şimdi sDom hakkında, ifadeden 'f' çıkarılarak filtre kaybolur (http://datatables.net/release-datatables/examples/basic_init/dom.html). – MaVRoSCy

+0

Sadece gerçekten "sDom", yani nessecary değil kullanıyorsanız geçerlidir. Ve söz konusu 'sDom' mevcut değil. Aslında, OP _ "... bu kodu kullanarak" _ -> ve boş bir başlatma bölümü yazar. – davidkonrad

2

veri bulunması için yeni bir unsur newSearchPlace tanımlayabilirsiniz içeride tabloda, arama filtresi:

$("#newSearchPlace").html($(".dataTables_filter")); 
0123:

<div id="newSearchPlace"></div> 

Sonra bu yeni yerin içinde arama filtresini koymak

+1

Bu cevap gerçekten çok az. Bu, benim durumumda 20'den fazla dinamik olarak oluşturulmuş veri tabanına sahip olmak için en iyi şekilde çalıştı. Diğer seçenekler, aşırı olayların acımasız() ile bile tetiklenmesini sağladı ve en yüksek puanlı cevap, tuş vuruşu başına 10 olaydan çok iyi sonuç verdiğinden garip yavaşlığa neden oldu. – rob

0

Evet sevdiği css bir sınıf yapabilirsiniz:

.pull-left{ 
    float: left !important; 
} 

ve sonra jquery veya javascript kullanarak datatable arama div için bu sınıf ekleyin.

örnek:

$('.dataTables_filter').addClass('pull-left'); 

senaryonuz HTML'nizin başlık kısmında olduğundan emin olun.

İlgili konular