2012-06-13 36 views
9

Tất cả trong tất cả tôi muốn xóa bất kỳ và tất cả các tùy chọn trống từ đầu vào SELECT. Lựa chọn được tạo động từ một tập lệnh mà người khác viết, dựa trên một đối tượng mà nó nhận được. Vấn đề của tôi đôi khi đối tượng có giá trị rỗng, để lại cho tôi một bộ tùy chọn chọn để lại cái gì đó được mong muốn.Tùy chọn tìm kiếm jQuery trong Chọn với giá trị rỗng/null loại bỏ nó và chọn tùy chọn đầu tiên sau giá trị

Dù sao thì mọi tùy chọn đầu tiên trong tập hợp đều trống. Vì vậy, tôi muốn loại bỏ điều đó và áp dụng selected="selected" cho tùy chọn đầu tiên xuất hiện sau khi tùy chọn đầu tiên bị xóa., Trong khi xóa bất kỳ khả năng nào khác có giá trị trống.

Vì vậy, trong thử nghiệm khái niệm ban đầu tôi đến với

$(select).each(function(){ 
       if ($(this+' option:selected').val() == '') 
       { 
        //this assumes that your empty value is '' 
        $(this).remove(); 
       } 
      }); 

mà dường như để loại bỏ toàn bộ lựa chọn, và tôi biết nguyên nhân của nó this được định nghĩa là chọn riêng của mình.

Tôi cũng đã thử $(select +'option[value=""]').remove();

Hiện nay tôi đang chỉ cố gắng để có được nó để loại bỏ các tùy chọn với các giá trị rỗng, sau khi tôi có thể đạt được điều đó thì tôi sẽ tìm ra cách để tôi chọn mục đầu tiên trên danh sách chính thức theo như DOM sẽ được quan tâm.

cũng đáng nhắc đến 'chọn' biến đang được chuyển được xác định trước đó trong hàm để nó hoạt động cho phần đó của khái niệm. Chỉ cần nói như vậy không ai nghĩ rằng tôi là một số làm thế nào khó hiểu nó với cái gì khác.

Trả lời

12
  • bạn có thể sử dụng .filter() để lọc ra các yếu tố lựa chọn sản phẩm nào và loại bỏ chúng cùng một lúc

  • sử dụng .prop() để thiết lập các thuộc tính đặc biệt như selected

Code:

$('select option') 
    .filter(function() { 
     return !this.value || $.trim(this.value).length == 0; 
    }) 
    .remove(); 

$('select option') 
    .first() 
    .prop('selected', true);​ 

DEMO

0

POJS để giải cứu!

function fixSelectOptions(SelectId){ 
var sel = document.getElementById(SelectId); 
for(var i = 0; i < sel.options.length; i++){ 
    if(sel.options[i].value === ""){ 
    sel.remove(i--);//decrease i to preserve future index references after removal 
    } 
} 
sel.options.selectedIndex = 0; 
} 
10

Điều này có thể được thực hiện dễ dàng hơn:

Element.find('option[value=""]').remove(); 
+3

Để ai tự hỏi, điều này sẽ không hoạt động trên tùy chọn viết là "" vì họ không có một thuộc tính giá trị gì cả. Sự khác biệt tinh tế ở đây sẽ là '$ (" ") .attr (" value ") == undefined' trong khi' $ ("") .attr ("value") == '' ' – apokryfos

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