2013-04-17 27 views
6

tôi có trang web dao cạo-mvc và một vài lựa chọn trên biểu mẫu. Tôi ràng buộc lựa chọn này với plugin select2 trong jquery như thế này:Làm cách nào tôi có thể liên kết jquery select2 với các lựa chọn mới được thêm vào?

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

Và biểu mẫu của tôi là dạng ajax (ajax bởi javascript, không phải bởi Ajax.BeginForm). Vấn đề là khi tôi gửi biểu mẫu, tôi thêm biểu mẫu khác với các giá trị được gửi của biểu mẫu đầu tiên, nhưng lựa chọn trên biểu mẫu mới sẽ không áp dụng plugin select2. Tôi biết rằng điều này là bình thường vì mục mới và nên được ràng buộc với .on() hoặc .live() nhưng tôi không biết làm thế nào để làm điều đó.

Bạn có thể giúp tôi không?

+3

Bạn không thể sử dụng ủy quyền bằng plugin, bạn phải khởi tạo các phần tử select2 của mình bên trong hàm gọi lại ajax –

Trả lời

0

Bạn đang làm cuộc gọi ajax do đó hãy chắc chắn rằng bạn tái init chọn trên bất cứ điều gì khác lựa chọn bạn muốn trong hoàn chỉnh cho bất kỳ hộp chọn mới trên trang ..

nên gọi ajax của bạn sẽ trông giống như

$.ajax({ 
    url: '.../', 
    data..., 
    type..., 
    success: function(data) 
    { 
     $('#newFormAddedID select').select2(); 
    } 

nên làm các trick .. bạn cũng có thể làm điều đó trong hoàn:. chức năng (... nếu biểu mẫu được thêm vào bất kể thời tiết các cuộc gọi ajax là thành công hay không

1

sử dụng ajaxcomplete

$(document).ajaxComplete(function(){ 
    $(".select2").select2(); 
}); 
+1

Giải pháp tốt, nhưng chỉ có thể truy cập cho các hộp chọn đi qua yêu cầu ajax. Nhưng không phải cho các hộp chọn được tạo động mà không có ajax. – algorhythm

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