2012-01-05 31 views
5

lãng phí ngày của tôi trong khi tìm kiếm cách nhận các giá trị tùy chọn đã chọn trong tiện ích giao diện người dùng JQuery của Michael Aufreiter. Đây là liên kết đến trang demo và github của mình: http://quasipartikel.at/multiselect/Giao diện người dùng JQuery Chọn nhiều cách để nhận các giá trị tùy chọn đã chọn

Kết quả là tôi chỉ cần trường giá trị của các tùy chọn đã chọn mà không cần gửi POST/GET tới tập lệnh PHP. Tôi đã thử nhiều phương pháp và vô dụng. Cần giúp đỡ và ý tưởng của bạn

* Tìm thấy nhiều chủ đề về multiselect jquery ui nhưng vô ích vì Aufreiter: s *

Trả lời

3

Tôi đã đi đến trang web của bạn đã bị liệt kê ở trên, và đã có thể chạy trong tôi bảng điều khiển chrome:

$('.ui-multiselect .selected li').each(function(idx,el){ console.log(el.title); }); 

Có vẻ như giá trị bạn muốn được lưu trữ trong thuộc tính tiêu đề của các mục danh sách trong phần tử div.selected.

Edit:

Doh! Tất nhiên bạn muốn các giá trị. Xin lỗi bạn đời. Hoàn toàn bỏ lỡ điều đó. Các hàng hóa thực được lưu trữ trong các đối tượng jQuery data(). Trong trường hợp này, khóa bạn muốn là 'optionLink'. Nó duy trì một tham chiếu đến một phần tử tùy chọn. Mỗi mục danh sách trong div '.selected' sử dụng phương thức jQuery.data() để thêm tùy chọn cơ bản vào nó.

Vì vậy, bạn cần lấy các mục danh sách được chọn, lặp lại, lấy 'tùy chọnLiên kết' từ kho dữ liệu jQuery dữ liệu và sau đó nhận giá trị.

Các mã sau đây hoạt động trên trang ví dụ:

$('.ui-multiselect .selected li').each(function(idx,el){ 
    console.log(el); 
    var link = $(el).data('optionLink'); 
    // link now points to a jQuery wrapped <option> tag 


    // I do a test on link first. not sure why, but one of them was undefined. 
    // however, I got all four values. So I'm not sure what the first <li> 
    // is. I'm thinking it's the header... 
    if(link){ 

     // here's your value. add it to an array, or whatever you need to do. 
     console.log(link.val()); 
    } 

}); 

Đây là lần đầu tiên tôi đã nhìn thấy của multiselect. Nó trơn. Nhưng tôi thông cảm với sự thất vọng của bạn đang cố gắng để có được một cái gì đó. Phương thức 'getSelectedOptions()' sẽ đẹp.

Chúc mừng

+0

Tôi cần giá trị của lĩnh vực này không phải tên của nó (mà thực sự là tiêu đề) http://clip2net.com/s/ 1swzK Có tên nhưng không có giá trị. Và tôi không thể tìm kiếm giá trị của trường bằng cách sử dụng văn bản của nó bởi vì dữ liệu mà tôi đưa vào tiện ích đa lựa chọn đang lấy ra khỏi mạng xã hội và không tiết kiệm 1k khối lượng, sau đó đăng chúng, sau đó tìm giá trị theo tên, sau đó cung cấp kết quả cho người dùng: s Vẫn cần maestro trợ giúp của bạn và cảm ơn bạn đã đăng :) – 966p

+0

. đã chỉnh sửa bài đăng và mã được thêm để nhận các giá trị. chúc may mắn! –

+0

Tuyệt vời!Hãy để tôi hôn bạn lol :)) Cảm ơn bạn rất nhiều, ví dụ của tôi là avaible trên http://russia-golosuet.ru/otkr/test.php – 966p

13

Điều đó sẽ hiệu quả. Đã thử nghiệm với bảng điều khiển Chrome

$("#countries").val(); 
+1

đừng quên thêm nhiều = "nhiều" trong thẻ đã chọn của bạn – coderman

1

Thử truy cập các giá trị đã chọn trong sự kiện đóng.

ví dụ:

$("#dropdown").multiselect({ 
    header: false, 
    selectedList : 1, 
    height: "auto", 
}).multiselectfilter().bind("multiselectclose", function(event, ui) { 
    var value = $("#dropdown").val(); 
}); 

Hy vọng điều đó sẽ hữu ích.

1

giải pháp tốt nhất

$('#select').multiselect({ 
    selectAllValue: 'multiselect-all', 
    enableCaseInsensitiveFiltering: true, 
    enableFiltering: true, 
    height: "auto", 
    close: function() { 
      debugger; 
      var values = new Array(); 
      $(this).multiselect("getChecked").each(function(index, item) { 

       values.push($(item).val()); 
      }); 
      $("input[id*=SelectedValues]").val(values.join(",")); 
    } 
}); 
0

Bạn có thể thử này:

$('#ListBoxId').multiselect({ 
    isOpen: true, 
    keepOpen: true, 
    filter: true 
}); 
Các vấn đề liên quan