2011-12-28 23 views
9

Làm cách nào để thêm hoặc xóa tùy chọn trong JQuery UI Multiselect? Tôi đang khởi tạo multiselect trên tải trang và tôi cần phải loại bỏ các giá trị hiện có và thêm các giá trị mới dựa trên lựa chọn khác. Tôi khởi tạo multiselect trên tải trang sử dụng:jquery multiselect reload

$("#multipleselectboxId").multiselect(); 

Sau đó, tôi đang bổ sung thêm giá trị cho nhiều đơn thả xuống sử dụng jQuery append()remove() phương pháp mà đang làm việc tốt với thả xuống gốc nhưng trong multiselect không nhận được phản ánh .

Có ai có thể trợ giúp việc này không?

Trả lời

13

Tôi tìm thấy giải pháp cho điều này, đầu tiên phá hủy multiselect và reInitialize nó, Cảm ơn bạn vì @ Brandon Joyce,

giải pháp cho việc này là

$("#multipleselectboxId").append(toAppend); 
$("#multipleselectboxId").remove(toRemove); 

$("#multipleselectboxId").multiselect('destroy'); 
$("#multipleselectboxId").multiselect(); 
+1

Câu trả lời này gây nhầm lẫn cho tôi. Bạn có thể giải thích hai dòng đầu tiên của giải pháp của bạn và làm thế nào chúng liên quan đến việc tải lại? – IcedDante

+0

Xin lỗi, bạn có chắc bạn không nên chấp nhận câu trả lời @Brandon Joyce như câu trả lời đúng đầu tiên không? –

+0

Chính xác những gì tôi đang tìm kiếm !! Sử dụng 'phá hủy' trước khi khởi tạo multiselect sắp xếp ra vấn đề của tôi! Cảm ơn! – AxleWack

20

Cho rằng một bạn chỉ có thể phá hủy và khởi tạo lại sau khi thay đổi ...

$("#multipleselectboxId").append(toAppend).multiselect("destroy").multiselect(); 

Ngoài ra còn có một plugin với một chức năng làm mới: EricHynds's Multiselect

$("#multipleselectboxId").append(toAppend).multiselect("refresh"); 
+0

không. Tôi đã thử, nó không hoạt động và các plugin bạn đã đề cập không giống như tôi đang sử dụng, tôi đang sử dụng từ liên kết này http://quasipartikel.at/multiselect_original/ –

+1

Ah, tốt, nếu mọi thứ khác thất bại, bạn có thể tiêu diệt nó và reinitialize? Có vẻ như nó đang sử dụng nhà máy sản xuất phụ tùng nên điều này có thể thực hiện được. –

+0

bạn có thể cập nhật câu trả lời của mình theo câu trả lời dưới đây để đánh dấu là câu trả lời được chấp nhận –

1

cũng plugin này hoạt động tốt nhưng tôi có một pb với tiêu diệt và lọc: dữ liệu kết hợp của tôi được nạp với ajax. Vì vậy, khi tôi làm mới dữ liệu với cuộc gọi ajax, tôi gọi phá hủy để làm mới các plugin:

myCombo.multiselect('destroy'); 
myCombo.multiselect().multiselectfilter(); 

Nó hoạt động cho các cuộc gọi đầu tiên: kết hợp rỗng, cuộc gọi ajax để load dữ liệu, gọi các chức năng trên. Nhưng nếu tôi làm mới dữ liệu kết hợp và gọi lại các chức năng trên, bộ lọc sẽ biến mất? Một người nào đó đã trải nghiệm điều này trước và tìm ra giải pháp?

0

tôi đã sử dụng nó theo cách này:

$("#<%= cmbInBayiID.ClientID %>").multiselect().trigger('reset'); 

Nó làm việc.

+2

Sử dụng tập lệnh không tốt và bạn sẽ cảm thấy tồi tệ. –

3

Tôi đã cố gắng xây dựng lại nhiều lựa chọn bằng .multiselect("destroy").multiselect(), nhưng nó không hoạt động, vì vậy cuối cùng tôi tìm thấy giải pháp này làm việc cho tôi.

$.each(jsonArray, function(i, val) { 
    $('#frmarticles-f_category_id').append('<option value="'+i+'">'+val+'</option>').multiselect('rebuild'); 
}); 
1

Cảm ơn bạn điều này đã giúp. Tôi đang sử dụng tiện ích con giao diện người dùng nhiều lựa chọn và đây là những gì đã làm việc

jQuery("select[title='" + FieldNameTitleText + "']").append("<option value='" + OptionValue+ "'>" + OptionText + "</option>").multiselect("refresh"); 
+0

Bị xích hoặc không sau khi "chắp thêm()" bằng cách sử dụng "làm mới" hoạt động tốt. Cảm ơn. – caglaror

0

Trong trường hợp này, tôi chỉ muốn thay thế tất cả nội dung trước đó bằng nhiều lựa chọn mới.

này đã làm việc cho tôi:

$('#multiselect_id').html(newHtml); 
$('#multiselect_id').multiselect('refresh'); 
0

Đây là những gì tôi đã làm :; nó có thể nhiều hơn cần thiết, nhưng nó làm việc cho tôi.

gốc "chọn" mã mà đòi hỏi phải sửa đổi:

<select id="MySelect" name="selection"> 
<option value="1">One</option> 
<option value="2">Two</option> 
</select> 

tôi xây dựng lại danh sách tùy chọn trong PHP, gửi nó vào hoạt Javascript qua JSON, và xây dựng/lưu trữ các danh sách mới trong một biến. Ví dụ:

// this is similar to if we got it from PHP 
var newList = '<option value="A">Alpha</option> 
<option value="B">Beta</option> 
<option value="C">Gamma</option>'; 

Bây giờ, để chuyển đổi này xung quanh trong widget jQuery UI Multiselect:

$('#MySelect').html(''); // clear out old list 
$('#MySelect').multiselect('destroy'); // tell widget to clear itself 
$('#MySelect').html(newList); // add in the new list 
$('#MySelect').multiselect(); // re-initialize the widget 

Đặc biệt, tôi lại khởi tạo nó với các thông số, ví dụ:

$('#MySelect').multiselect({selectedList: 4, header: false}); 

Nếu bất cứ ai đã đọc này xuống và vẫn còn gặp khó khăn, hãy thử một lần này.

0

Đối wenzhixin MultiSelect:

var i = jQuery('input'); 
i.data('multipleSelect').$parent.remove(); 
i.removeData('multipleSelect'); 
i.show(); 
0
function setMultiSelect(idElement, paramVal){ 
     eval("$('#"+idElement+"').multiselect('uncheckAll')"); 
     $.each($('input[name="multiselect_'+idElement+'"]'), function(k,i) {  
      if(paramVal.indexOf(this.value)!=-1){ 
       this.checked = true; 
      } 
     }); 
     eval("$('#"+idElement+"').multiselect('update')"); 
    } 
+1

Bạn có thể giải thích điều này không? – Vemonus

0
var valArr = ["1", "2"], 
     i = 0, 
     size = valArr.length, 
    $options = $('#MySelect option'); 

for (i; i < size; i++) { 
    $options.filter('[value="' + valArr[i] + '"]').prop('selected', true); 
} 

$('#MySelect').multiselect('reload'); 

1.valArr là giá trị của chọn Options
2. Đối với vòng lặp để thiết lập lựa chọn để lựa chọn phù hợp dựa trên valArr
3.our thay đổi là chỉ trong phần tử chọn ẩn
4. để thay đổi trong các yếu tố được tạo nhiều lựa chọn, chúng tôi cần tải lại
5. Mỗi lần cắm có thể có tên khác để tải lại, ví dụ: cập nhật, làm mới

+1

Không chỉ đăng mã như một aswer. Giải thích nó một chút. –

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