2013-04-17 21 views
23

İçinde birkaç select'i olan bir form var. Böyle olanlar seçer üzerinde Select2 jquery eklentisi uyguluyorum:Dinamik select2 tetiklenmiyor change olayı

$("select.company_select, select.positions_select").select2(); 

en seçkin eser ince, ama benim formunu autosubmit için bu kodu var (ben form etiketi üzerinde autosubmit sınıf var).

Buradaki özellik şudur: select2 ile değişiklik veya odak olayı hiç bitmiyor. Select2'yi kaldırırsam, olaylar mükemmel bir şekilde ateşlenir.

Neyi yanlış yapıyorum?

cevap

30

Select2 yalnızca 2 olayı, open ve change (http://select2.github.io/select2/#events) var, yalnızca onları dinleyebilmek mümkün. <select> öğesi için focus yerine open olayını kullanabilirsiniz. Ve kullanımdan kaldırıldığı için lütfen live() yöntemini kullanmayın. Bunun yerine on() kullanın. İşte

var currentData; 
$(".autosubmit select").on("open", function() { 
    currentData = $(this).val(); 
}); 
$(".autosubmit input").on("focus", function() { 
    currentData = $(this).val(); 
}); 
$(".autosubmit input, .autosubmit select").on("change", function() { 
    var $this = $(this); 
    console.log('autosubmitting'); 
    if (!currentData || currentData != $this.val()) { 
     $($this.get(0).form).ajaxSubmit(function (response, status, xhr, $form) { 
      currentData = ""; 
     }); 
    } 
}); 

Fiddle

+0

Aynı sorun bu gece buydu. Bu neredeyse benim için çalıştı. jQuery 1.11.1 ve select2'nin bir metin kutusu sürümünü kullanarak $ ('. container') 'ın daha uzun biçimini kullanmam gerekti (' change ',' # myselect2 ', function() {... – xeo

+0

Docs [http : //select2.github.io/select2/] (http://select2.github.io/select2/) –

+3

Bu keman artık işe yaramıyor. "Uncanught TypeError: $ (...). select2 bir işlev değildir "select2.js dış kaynaklara dahil olmasına rağmen konsolda. Muhtemelen jsfiddle ile ilgili bir sorun mu? – jeconner