2015-06-03 18 views
6

Tôi đang tìm cách tạo một menu thả xuống chosen chỉ đọc và tôi cần thực hiện điều này bằng cách sử dụng công cụ chọn jQuery. Nếu tôi đặt tính năng này thành vô hiệu hóa bằng cách sử dụng:Tạo danh sách thả xuống được chọn Chỉ đọc (không bị tắt)

$("#dropdownDepartment").attr("disabled","disabled").trigger('chosen:updated'); 

giá trị không được đăng nhưng tôi cần nó.

Tôi đã thử

$("#dropdownDepartment").attr('readonly',true).trigger('chosen:updated'); 

nhưng điều này không hoạt động.

Tôi đang sử dụng Chosen v1.4.2jQuery v2.1.4.

Giúp đánh giá cao! Cảm ơn bạn.

+0

bạn có nghĩa là 'vô hiệu hóa' nó? Tôi có nghĩa là bạn không muốn người dùng nhấp vào nó? –

+0

nếu bạn muốn vô hiệu hóa bạn có thể thử điều này: - http://jsfiddle.net/ymou0ffx/1/ –

+3

Tôi không muốn vô hiệu hóa nó. Tôi muốn làm cho nó chỉ đọc. – Robin

Trả lời

4

Có một số tùy chọn bạn có thể làm.

  • Tắt trình đơn thả xuống và lưu trữ giá trị trong trường bị ẩn và gửi giá trị đó trong POST.
  • Disable tất cả các lựa chọn khác để chỉ có một lựa chọn được kích hoạt

    $('#dropdownDepartment option:not(:selected)').attr('disabled', true); 
    
  • Disable thả xuống và trước khi bạn làm một bài kích hoạt nó
  • Khi bạn muốn vô hiệu hóa nó biến nó thành một chỉ đọc textbox
5

thử điều này: -

var select = $('select'); 
var oldVal=$('select').val(); 
select.chosen().on('change',function(e){ 
    select.val(oldVal); 
    select.trigger("chosen:updated"); 
}); 

Demo

2

Tôi có cách giải quyết khác. Vì vậy, hy vọng nó sẽ giúp một người nào đó trong tương lai (tôi đoán bạn đã làm giải pháp).

Trước tiên, in giá trị tùy chọn đã chọn của lựa chọn đã chọn vào đầu vào bị ẩn như sau. Đối với giá trị $_POST nhận được giá trị từ đầu vào ẩn này $_POST['myselect']:

<input type="hidden" name="myselect" value="selected_option_value_goes_here" /> 

Sau đó, vô hiệu hóa các chọn lựa chọn. Nhưng việc đặt giá trị đầu vào bị ẩn thành giá trị hiện tại là an toàn trước khi tắt:

$('input[name=myselect]').val($(".chosen-select").val()); 
$('.chosen-select').attr("disabled", true).trigger("chosen:updated"); 

N.B. Nếu bạn không muốn vô hiệu hóa nó thì không cần phải cập nhật giá trị của đầu vào bị ẩn trên sự kiện thay đổi của lựa chọn đã chọn.

A working demo can be found by clicking here.

0

Tôi có thể là muộn để đảng, nhưng tôi đi qua cùng một vấn đề như OP. Cách giải quyết mà tôi đã tìm thấy để đăng lại các giá trị ngay cả khi chúng bị vô hiệu hóa là kích hoạt lại chúng khi biểu mẫu được gửi.

$("form").bind("submit", function() { 
    $("#TheList *").prop("disabled", false).trigger("chosen:updated"); 
}); 

Lưu ý [khoảng trắng] [sao] sau Danh sách, nó sẽ được bật lại đệ quy cho từng trẻ trong danh sách.

0

Giải pháp tốt nhất cho tôi là một mẹo xấu xí như vậy $("#dropdownDepartment").prop('disabled',true).trigger('chosen:updated').prop('disabled',false). Vì vậy, đã chọn bị vô hiệu hóa nhưng giá trị từ chọn được POST.

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