2013-02-22 47 views
15

Tài liệu là khủng khiếp hoặc tôi đang thiếu điều gì đó. Tôi đang cố gắng thêm một lớp lỗi vào một hộp select2 để xác nhận biểu mẫu. Nó chỉ là một đường viền màu đỏ 1px.Thêm lớp học vào phần tử select2

Tôi đã tìm thấy phương pháp containerCssClass trong tài liệu, nhưng tôi không chắc chắn cách áp dụng nó.

Tôi đã thử những điều sau đây không có may mắn:

$("#myBox").select2().containerCssClass('error'); 

Trả lời

21

jQuery sử dụng đối tượng JSON để khởi tạo, vì vậy tôi đoán này sẽ cũng như: \

$("#myBox").select2({ containerCssClass : "error" }); 

Nếu bạn muốn thêm/xóa lớp học bạn có thể thực hiện việc này sau khi bạn khởi tạo nó

$($("#myBox").select2("container")).addClass("error"); 
$($("#myBox").select2("container")).removeClass("error"); 

Hàm trên sẽ nhận nút DOM của con chính tainer của Select2 ví dụ .: $("#myBox").select2("container")

quan trọng
Bạn sẽ cần phải sử dụng phương pháp container để lấy container vì bạn sẽ không thể chỉnh sửa SELECT trực tiếp nhưng Select2 sẽ tạo ra HTML khác để mô phỏng một SELECT đó là stylable.

+0

Đề xuất đầu tiên của bạn không phù hợp với tôi.Đối với cái thứ hai, nếu bạn có nhiều lựa chọn trên trang với một lớp duy nhất, bạn cần phải lặp qua tất cả để thêm vào mỗi lớp trong số đó mà bạn cần. Làm '$ ($ (". Myclass "). Select2 (" container ")). AddClass (" error ")' sẽ không hoạt động. – machineaddict

+1

Lưu ý bạn phải sử dụng phiên bản đầy đủ: https://github.com/select2/select2/issues/3302 – user1063287

+1

Tôi nhận được 'Loại không tìm kiếm lỗi: Không thể đọc thuộc tính 'áp dụng' không xác định' cho lần sử dụng thứ hai chỉ với' $ ('#myBox'). select2 ('container') ' – Jared

8

Theo số documentation, containerCssClass chỉ là thuộc tính hàm tạo. Điều tốt nhất có lẽ là bạn đang đi để có thể làm là khởi tạo lại nó khi bạn nhận được một lỗi qua:

$("#myBox").select2({ 
    containerCssClass: "error" 
}); 

Lưu ý từ bình luận: Nếu bạn nhận được lỗi chưa gặp: Không Select2/compat/containerCss (...) , bạn cần phải bao gồm phiên bản select2.full.js thay vì cơ bản một

+1

Cảm ơn bạn đã đề xuất thêm select2.full.js – Shiv

+0

@Samsquanch Tôi tải xuống phiên bản đầy đủ ở đâu? Tôi dường như không thể tìm thấy nó. –

+0

Nvmd, tôi đã tải xuống từ Nuget về cơ bản là di sản –

0

bạn có thể sử dụng dropdownCssClass opiton

$("#myBox").select2({ 
    containerCssClass: "error" 
}); 
1

cách dễ nhất:

Tạo một lớp cha mẹ như

<div class="select-error"> 
    <select id="select2" name="select2" data-required class="form-control"> 
     <option value="" selected>No selected</option> 
     <option value="1">First</option> 
     <option value="2">Second</option> 
    </select> 
</div> 

khi bạn xác nhận nó với jquery hoặc php chỉ cần thêm phong cách hoặc css để .select-error lớp như

style="border:1px solid red; border-radius: 4px" 

jQuery dụ:

$('[data-required]').each(function() { 
    if (!$(this).val()) { 
    if ($(this).data('select2')) { 
     $('.select-error').css({ 
     'border': '1px solid red', 
     'border-radius': '4px' 
     }); 
    } 
    }); 
+0

Trong khi không trả lời chính xác câu hỏi, tôi chắc chắn rằng phần lớn người xem thực sự cần – Vincent

+0

Nhưng nếu tôi có 2 lựa chọn khác nhau thì điều này cũng sẽ ảnh hưởng đến lựa chọn thứ hai và đổi nó thành đường viền màu đỏ – user3548161

11

Đối với phần tử select2 đã được khởi tạo, tôi đã thử giải pháp @Niels nhưng đã dẫn đến lỗi: Uncaught TypeError: Cannot read property 'apply' of undefined

Went vào nguồn và điều này đã làm việc thay vì:

$($('#myBox').data('select2').$container).addClass('error') 
$($('#myBox').data('select2').$container).removeClass('error') 

Sử dụng Select2 v4.0.3 full

+0

Cách tiếp cận duy nhất có hiệu quả đối với tôi. – Fernando

+0

Điều đó làm việc, nhưng hàng đầu $ (...) là thừa vì $ container đã là một yếu tố jquery –

+0

Cảm ơn, giải pháp của bạn tiết kiệm cuộc sống của tôi – vietnguyen09

3

tùy chọn sử dụng theme.

$(".select").select2({ 
     placeholder: "", 
     allowClear: false, 
     theme: "custom-option-select" 
    }); 
+0

yeah đây là đúng –

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