2012-02-21 33 views
9

Tôi Populating một lựa chọn lĩnh vực sử dụng JQuery trên tải trang sử dụng phương pháp nàyJQuery refresh chọn hộp

$('#select').append('<option value="' + result + '">' + result + '</option>'); 

Tuy nhiên điều này rời chọn hộp 'trống', tức là giá trị đầu tiên trong danh sách tùy chọn không được chọn trước như tùy chọn đã chọn.

Làm cách nào để 'làm mới' danh sách này để giá trị đầu tiên được chọn trước?

Xin lỗi - đáng lẽ phải nói đó là di động của JQuery trước

Cảm ơn bạn.

Trả lời

21

Bạn có thể thêm thuộc tính "đã chọn" vào phần tử tùy chọn mà bạn muốn được chọn:

$('#select') 
    .append('<option value="' + result + '" selected="selected">' + result + '</option>'); 

Bạn không chỉ định cách bạn cư chính xác bạn hãy chọn phần tử, sử dụng một vòng lặp, bạn có thể làm như thế này:

var data = ['a', 'b', 'c']; 
var $select = $('#select'); // you might wanna empty it first with .empty() 

for (var i = 0; i < data.length; i++) { 
    var o = $('<option/>', { value: data[i] }) 
     .text(data[i]) 
     .prop('selected', i == 0); 
    o.appendTo($select); 
}​ 

DEMO


Vì vậy, có vẻ như bạn đang sử dụng jQuery Mobile như bạn đã nói trong bình luận.

Nếu bạn đang sử dụng Chọn Menu phụ tùng, bạn cần phải lập trình làm mới sau khi bạn thực hiện thay đổi theo chương trình nội dung/cấu trúc của nó:

$select.selectmenu("refresh", true); 

Documentation

+0

Có lẽ đây là vấn đề với các biểu mẫu trên các mẫu di động của JQuery vì không có ví dụ nào trong số các ví dụ này được chọn trước giá trị, có trong ví dụ đó (ví dụ trên iPhone, khi bạn chọn lựa chọn có dấu chọn màu xanh bên cạnh giá trị đã chọn) nhưng khi tải hộp chọn là màu trắng. Rất kỳ quặc. – user1202278

+1

Bạn nên chỉ định bạn đang sử dụng điện thoại di động jquery, đây là thông tin khá quan trọng! Bạn đang sử dụng widget selectmenu? –

+0

Tôi đã chỉnh sửa câu trả lời của mình cho phù hợp. –

3

Đơn giản chỉ cần .. bạn thiết lập giá trị bất cứ điều gì bạn muốn, ví dụ: $('#select').val(5); .. như vậy trong trường hợp của bạn $('#select').val(result);

Chỉnh sửa của nó: một ví dụ làm việc đầy đủ bao gồm:

<script type='text/javascript' src='http://code.jquery.com/jquery-1.6.4.js'></script> 
<select id='select'></select> 
<br> 
<input type=button onclick='addNew()' value='Add'> 

<script> 
function addNew() 
{ 
     var result = Math.floor(Math.random()*1000); 
     $('#select').append('<option value="' + result + '">' + result + '</option>'); 
     $('#select').val(result);   
} 
</script> 

+0

Tôi sợ rằng không giải quyết nó, vẫn tùy chọn đã được chọn trước trống :( – user1202278

+0

Tôi đã cập nhật câu trả lời bằng ví dụ đang hoạt động – Ashraf

+0

Có lẽ đây là vấn đề với các trường chọn biểu mẫu trên thiết bị di động của JQuery vì không có ví dụ nào trong số này là chọn trước giá trị, có trong t mũ (ví dụ trên iPhone, khi bạn xem lựa chọn cho có một đánh dấu màu xanh bên cạnh giá trị đã chọn) nhưng khi tải hộp chọn là màu trắng. Rất kỳ quặc. – user1202278

1

Không phải tất cả các trình duyệt mới chọn tự động sau khi bạn thêm tùy chọn mới.

Một mẹo làm việc cho tôi là ẩn và hiển thị hộp chọn ngay sau khi thêm tùy chọn mới vào nó. Vì vậy, trong trường hợp của bạn:

$('#select').append('<option value="' + result + '">' + result + '</option>').hide().show(); 

Đối với việc lựa chọn đúng tùy chọn mới được bổ sung, hãy làm theo với:

$('select').val(result); 
3

Bạn có thể sử dụng

$('#select').removeAttr('selected').find('option:first').attr('selected', 'selected'); 
+0

Có lẽ đây là vấn đề với các biểu mẫu trên các mẫu di động của JQuery khi không có ví dụ nào trong số này là chọn trước giá trị, có trong ví dụ đó (ví dụ trên iPhone, khi bạn chọn chọn có dấu màu xanh dương tiếp theo với giá trị đã chọn) nhưng khi tải hộp chọn là màu trắng. Rất kỳ quặc. – user1202278

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